当前位置: 首页 > news >正文

网站建设公司厦门有哪些灯光设计网站推荐

网站建设公司厦门有哪些,灯光设计网站推荐,企业网站站内优化,一级建造师网官网Java 中的设计模式#xff1a;经典与现代实践 1. 设计模式简介 设计模式是一种软件开发中的思想#xff0c;它为我们提供了一些经过验证的、能够应对常见问题的解决方案。学习和掌握设计模式能够让开发者在面对复杂的需求时#xff0c;能够设计出更加灵活、可维护的代码。…Java 中的设计模式经典与现代实践 1. 设计模式简介 设计模式是一种软件开发中的思想它为我们提供了一些经过验证的、能够应对常见问题的解决方案。学习和掌握设计模式能够让开发者在面对复杂的需求时能够设计出更加灵活、可维护的代码。现代 Java 语言的特点如 Lambda 表达式、Stream API、Optional使得设计模式的实现更加简洁和高效。 设计模式按照其功能可以分为三大类 创建型模式用于对象创建避免直接实例化。结构型模式用于类和对象的组合解决系统中类之间的关系问题。行为型模式描述对象之间的交互和职责划分。 在这篇文章中我们将通过现代 Java 的特性来重构经典设计模式的实现帮助开发者更好地理解和运用设计模式。 2. 创建型设计模式 2.1 工厂模式Factory Pattern 经典实现 工厂模式通过封装对象的创建逻辑将客户端与具体类的实例化解耦。通常适用于在创建对象时需要复杂逻辑或者希望通过参数控制生成不同对象的场景。 经典代码示例 // 产品接口 public interface Car {void drive(); }// 具体产品类 public class BMW implements Car {Overridepublic void drive() {System.out.println(Driving BMW...);} }public class Audi implements Car {Overridepublic void drive() {System.out.println(Driving Audi...);} }// 工厂类 public class CarFactory {public static Car createCar(String type) {switch (type.toLowerCase()) {case bmw: return new BMW();case audi: return new Audi();default: throw new IllegalArgumentException(Unknown car type);}} }现代 Java 实现使用 Lambda 表达式 我们可以使用 Lambda 表达式来简化工厂模式的实现减少冗长的 if-else 或 switch 语句使得代码更简洁、灵活。 import java.util.HashMap; import java.util.Map; import java.util.function.Supplier;public class CarFactory {private static final MapString, SupplierCar carRegistry new HashMap();static {carRegistry.put(bmw, BMW::new);carRegistry.put(audi, Audi::new);}public static Car createCar(String type) {SupplierCar carSupplier carRegistry.get(type.toLowerCase());if (carSupplier null) {throw new IllegalArgumentException(Unknown car type);}return carSupplier.get();} }Spring 框架中的工厂模式 在 Spring 框架中ApplicationContext 就是工厂模式的实现它负责实例化并管理 Bean。 // Spring 通过工厂模式实例化 Bean ApplicationContext context new ClassPathXmlApplicationContext(applicationContext.xml); Car car context.getBean(car, Car.class); car.drive();3. 结构型设计模式 3.1 代理模式Proxy Pattern 经典实现 代理模式通过引入代理对象来控制对真实对象的访问。代理对象可以在调用目标对象之前或之后增加额外的逻辑比如日志、权限控制等。 经典代码示例 // 服务接口 public interface UserService {void createUser(String username); }// 真实服务类 public class RealUserService implements UserService {Overridepublic void createUser(String username) {System.out.println(Creating user: username);} }// 代理类 public class UserServiceProxy implements UserService {private final RealUserService realUserService new RealUserService();Overridepublic void createUser(String username) {System.out.println(Logging: Start creating user);realUserService.createUser(username);System.out.println(Logging: End creating user);} }现代 Java 实现使用 Java 8 的 Stream 和 Optional 我们可以利用 Java 8 的 Optional 来避免 null 值的处理并使用 Stream API 来简化数据的处理。 public class UserServiceProxy implements UserService {private final RealUserService realUserService new RealUserService();Overridepublic void createUser(String username) {Optional.of(username).filter(name - !name.isEmpty()).ifPresentOrElse(name - {System.out.println(Logging: Start creating user);realUserService.createUser(name);System.out.println(Logging: End creating user);},() - System.out.println(Invalid username));} }Spring AOP 中的代理模式 Spring 的 AOP面向切面编程就是利用代理模式来增强目标方法的功能。Spring 使用 JDK 动态代理 或 CGLIB 代理 来生成代理对象。 Service public class OrderService {Transactionalpublic void createOrder() {// 事务管理由代理类处理} }4. 行为型设计模式 4.1 策略模式Strategy Pattern 经典实现 策略模式通过定义一系列算法并将每个算法封装到独立的策略类中使得算法的选择和使用变得灵活。策略模式能够在运行时动态地改变策略。 经典代码示例 public interface PaymentStrategy {void pay(int amount); }public class CreditCardPayment implements PaymentStrategy {Overridepublic void pay(int amount) {System.out.println(Paying amount using Credit Card);} }public class PayPalPayment implements PaymentStrategy {Overridepublic void pay(int amount) {System.out.println(Paying amount using PayPal);} }public class PaymentContext {private PaymentStrategy strategy;public void setPaymentStrategy(PaymentStrategy strategy) {this.strategy strategy;}public void executePayment(int amount) {strategy.pay(amount);} }现代 Java 实现使用 Stream 进行策略选择 可以通过 Stream API 来简化策略的选择过程让代码更加简洁和优雅。 public class PaymentContext {private MapString, PaymentStrategy strategies Map.of(credit, new CreditCardPayment(),paypal, new PayPalPayment());public void executePayment(String paymentType, int amount) {Optional.ofNullable(strategies.get(paymentType)).ifPresentOrElse(strategy - strategy.pay(amount),() - System.out.println(Invalid payment method));} }Spring 中的策略模式 Spring 中的 HandlerMapping 就是使用策略模式的一个例子它通过不同的请求类型和处理器选择不同的处理策略。 public interface HandlerAdapter {boolean supports(Object handler);ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception; }不同类型的 HandlerAdapter 处理不同的 Controller如 SimpleControllerHandlerAdapter 处理 SimpleController。 5. 模板方法模式Template Method Pattern 经典实现 模板方法模式通过定义一个算法的骨架将某些步骤的实现延迟到子类中。这样子类可以在保留算法结构的同时定制部分实现。 经典代码示例 public abstract class DataProcessor {public void process() {readData();processData();writeData();}protected abstract void readData();protected abstract void processData();protected abstract void writeData(); }public class CSVDataProcessor extends DataProcessor {Overrideprotected void readData() {System.out.println(Reading CSV data...);}Overrideprotected void processData() {System.out.println(Processing CSV data...);}Overrideprotected void writeData() {System.out.println(Writing CSV data...);} }现代 Java 实现使用 Lambda 表达式和 Optional 我们可以结合 Lambda 表达式 来动态传入处理步骤让模板方法的使用更加灵活。 public abstract class DataProcessor {public void process() {processStep(this::readData, Reading);processStep(this::processData, Processing);processStep(this::writeData, Writing);}private void processStep(Runnable step, String stepName) {System.out.println(stepName data...);step.run();}protected abstract void readData();protected abstract void processData();protected abstract void writeData(); }6. 总结 通过结合现代 Java 特性我们可以让经典的设计模式变得更加简洁和高效。 Lambda 表达式 和 Stream API 为我们的设计模式实现提供了更灵活的方式而 Optional 可以帮助我们避免空指针异常使得代码更加健壮。 在实际的项目开发中理解和运用设计模式能够大大提高代码的可维护性和可扩展性。希望本文的示例能够帮助你更好地理解设计模式并在实际开发中灵活运用。
http://www.w-s-a.com/news/422843/

相关文章:

  • wordpress 代码编辑插件下载搜索引擎优化seo课程总结
  • 韩都衣舍网站建设的改进邯郸公众号小程序制作
  • 上海设计网站建设在线视频制作
  • 东营高端网站建设新建网站如何让百度收录
  • wordpress怎么生成网站地图微网站平台怎样做网站
  • 同安区建设局网站招投标公众号简介有趣的文案
  • 江苏州 网站制作网上宣传方法有哪些
  • 做网站时怎样申请域名郑州制作网站公司
  • 深圳 网站开发公司电话网站关键词快排名
  • 网站建设的工作总结seo同行网站
  • 网站需要兼容哪些浏览器sql数据库做的网站怎么发布
  • 营销型网站的建站步骤是什么意思广州门户网站建设公司
  • 汕尾好网站建设推广计算机软件包含网站开发
  • 建设工程施工许可证在哪个网站办wordpress更换主题白屏
  • 微交易网站建设wordpress摘要调用
  • 做网站维护需要懂什么网站后台后缀名
  • 网站建设的认可桂平市住房和城乡建设局网站
  • 网站设计师岗位职责域名关键词查询
  • 百度怎样建设网站盐城公司网站建设
  • 站长工具国产2023网站制作 商务
  • 网络新闻专题做的最好的网站杭州网站设计建设公司
  • 电商网站界面设计流程ps培训班一般学费多少钱
  • 西安网站运营上海闵行区网站制作公司
  • 宁波网站推广代运营长链接转化成短链接工具
  • 小企业如何建网站怎么自己制作app
  • 苏州品牌网站制作公司宁波建设工程有限公司
  • 合肥网站建设zgkr互联网创业好项目
  • 哪里学网站建设与管理云落wordpress
  • 网站建设意见做网站涉及到哪些
  • 网站导航栏原型图怎么做怎么样创建一个网站