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

做销售网站wordpress mysql配置文件

做销售网站,wordpress mysql配置文件,wordpress主题 付费,吉利的广告公司名字Java 设计模式:工厂模式详解 工厂模式(Factory Pattern)是一种创建型设计模式,它通过将对象的创建过程封装到工厂类中,避免了直接使用 new 关键字创建对象,从而提高了代码的灵活性和可维护性。本文将介绍工…

Java 设计模式:工厂模式详解

工厂模式(Factory Pattern)是一种创建型设计模式,它通过将对象的创建过程封装到工厂类中,避免了直接使用 new 关键字创建对象,从而提高了代码的灵活性和可维护性。本文将介绍工厂模式的定义、分类及其在 Java 中的实现方式。

1. 什么是工厂模式?

工厂模式的核心思想是:定义一个用于创建对象的接口或类,让调用者通过工厂获取对象实例,而无需关心对象的具体创建细节。它遵循“开闭原则”,便于扩展新类型对象。

模式分类

工厂模式通常分为三种:

  1. 简单工厂模式(Simple Factory):通过一个工厂类根据参数创建不同对象(非 GoF 23 种设计模式之一,但常被提及)。
  2. 工厂方法模式(Factory Method):定义一个创建对象的接口,由子类决定实例化哪个类。
  3. 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或依赖对象的接口。

2. 简单工厂模式实现

2.1 示例场景

假设我们要创建一个支付系统,支持微信支付和支付宝支付。

2.2 定义产品接口

public interface Payment {void pay(double amount);
}

2.3 实现具体产品

public class WeChatPayment implements Payment {@Overridepublic void pay(double amount) {System.out.println("通过微信支付 " + amount + " 元");}
}public class AlipayPayment implements Payment {@Overridepublic void pay(double amount) {System.out.println("通过支付宝支付 " + amount + " 元");}
}

2.4 创建简单工厂

public class PaymentFactory {public static Payment createPayment(String type) {switch (type) {case "wechat":return new WeChatPayment();case "alipay":return new AlipayPayment();default:throw new IllegalArgumentException("未知的支付类型: " + type);}}
}

2.5 客户端使用

public class Client {public static void main(String[] args) {Payment wechat = PaymentFactory.createPayment("wechat");wechat.pay(100.0);Payment alipay = PaymentFactory.createPayment("alipay");alipay.pay(50.0);}
}

输出结果

通过微信支付 100.0 元
通过支付宝支付 50.0 元

简单工厂特点

  • 优点:简单易用,适合产品类型较少的场景。
  • 缺点:新增支付方式时需修改工厂类,违反“开闭原则”。

3. 工厂方法模式实现

3.1 示例场景

改进支付系统,每种支付方式拥有独立的工厂。

3.2 定义抽象工厂接口

public interface PaymentFactory {Payment createPayment();
}

3.3 实现具体工厂

public class WeChatPaymentFactory implements PaymentFactory {@Overridepublic Payment createPayment() {return new WeChatPayment();}
}public class AlipayPaymentFactory implements PaymentFactory {@Overridepublic Payment createPayment() {return new AlipayPayment();}
}

3.4 客户端使用

public class Client {public static void main(String[] args) {PaymentFactory wechatFactory = new WeChatPaymentFactory();Payment wechat = wechatFactory.createPayment();wechat.pay(100.0);PaymentFactory alipayFactory = new AlipayPaymentFactory();Payment alipay = alipayFactory.createPayment();alipay.pay(50.0);}
}

输出结果

同简单工厂。

工厂方法特点

  • 优点:新增支付方式只需新增工厂类,符合“开闭原则”。
  • 缺点:类数量增加,系统复杂度提升。

4. 抽象工厂模式实现

4.1 示例场景

扩展支付系统,新增支付和退款功能,涉及一组相关产品。

4.2 定义产品族接口

public interface Payment {void pay(double amount);
}public interface Refund {void refund(double amount);
}

4.3 实现具体产品

public class WeChatPayment implements Payment {@Overridepublic void pay(double amount) {System.out.println("通过微信支付 " + amount + " 元");}
}public class WeChatRefund implements Refund {@Overridepublic void refund(double amount) {System.out.println("通过微信退款 " + amount + " 元");}
}public class AlipayPayment implements Payment {@Overridepublic void pay(double amount) {System.out.println("通过支付宝支付 " + amount + " 元");}
}public class AlipayRefund implements Refund {@Overridepublic void refund(double amount) {System.out.println("通过支付宝退款 " + amount + " 元");}
}

4.4 定义抽象工厂接口

public interface PaymentAbstractFactory {Payment createPayment();Refund createRefund();
}

4.5 实现具体工厂

public class WeChatFactory implements PaymentAbstractFactory {@Overridepublic Payment createPayment() {return new WeChatPayment();}@Overridepublic Refund createRefund() {return new WeChatRefund();}
}public class AlipayFactory implements PaymentAbstractFactory {@Overridepublic Payment createPayment() {return new AlipayPayment();}@Overridepublic Refund createRefund() {return new AlipayRefund();}
}

4.6 客户端使用

public class Client {public static void main(String[] args) {PaymentAbstractFactory wechatFactory = new WeChatFactory();Payment wechatPayment = wechatFactory.createPayment();Refund wechatRefund = wechatFactory.createRefund();wechatPayment.pay(100.0);wechatRefund.refund(20.0);PaymentAbstractFactory alipayFactory = new AlipayFactory();Payment alipayPayment = alipayFactory.createPayment();Refund alipayRefund = alipayFactory.createRefund();alipayPayment.pay(50.0);alipayRefund.refund(10.0);}
}

输出结果

通过微信支付 100.0 元
通过微信退款 20.0 元
通过支付宝支付 50.0 元
通过支付宝退款 10.0 元

抽象工厂特点

  • 优点:适合创建一组相关对象,保证产品族的统一性。
  • 缺点:新增产品族(如新增银联支付)简单,但新增产品种类(如新增查询功能)需修改接口,扩展性有限。

5. 工厂模式的优点与缺点

优点

  1. 封装创建过程:隐藏对象创建细节,降低耦合。
  2. 扩展性强:工厂方法和抽象工厂支持灵活扩展。
  3. 复用性高:统一管理对象创建逻辑。

缺点

  1. 类数量增加:特别是工厂方法和抽象工厂模式,会引入更多类。
  2. 复杂度提升:对简单场景可能显得过于复杂。

6. 实际应用场景

  • Spring 中的 BeanFactory:Spring 框架使用工厂模式创建和管理 Bean。
  • JDBC 驱动管理DriverManager 通过工厂模式加载不同数据库驱动。
  • 日志框架:如 SLF4J 的 LoggerFactory,动态创建日志实例。

7. 总结

工厂模式是 Java 中最常用的设计模式之一,通过简单工厂、工厂方法和抽象工厂三种形式,满足了从简单到复杂的对象创建需求。简单工厂适合小型系统,工厂方法强调扩展性,抽象工厂则适用于产品族场景。掌握工厂模式,能让你的代码更灵活、可维护,值得在实际项目中实践!

希望这篇博文对你理解工厂模式有所帮助!如果有其他设计模式相关需求,欢迎留言交流。


文章转载自:

http://rLcF5W2S.thhrf.cn
http://VeISYvQE.thhrf.cn
http://RXg1AM0A.thhrf.cn
http://U9g0sCut.thhrf.cn
http://hJzZpCu4.thhrf.cn
http://HqaUFdBv.thhrf.cn
http://YMEi68Bz.thhrf.cn
http://h3dBnGPL.thhrf.cn
http://C5LqlrwY.thhrf.cn
http://O62wu0fO.thhrf.cn
http://ZcWn84mP.thhrf.cn
http://K1IELSOY.thhrf.cn
http://vSzMyK1R.thhrf.cn
http://UvEP9lfG.thhrf.cn
http://zX2jTyFA.thhrf.cn
http://MWDaM3WK.thhrf.cn
http://g4gtt0Ug.thhrf.cn
http://r3KhLnh6.thhrf.cn
http://cnEtWgUW.thhrf.cn
http://QnHST053.thhrf.cn
http://QtpO0s8L.thhrf.cn
http://a3TMIfMm.thhrf.cn
http://0U14jDCh.thhrf.cn
http://Q6jKadRv.thhrf.cn
http://gPxjiYMX.thhrf.cn
http://KYg0tI0X.thhrf.cn
http://ic7EdaZ2.thhrf.cn
http://tGe8ohfY.thhrf.cn
http://kEnTuO6t.thhrf.cn
http://HjxZ2MyB.thhrf.cn
http://www.dtcms.com/wzjs/657643.html

相关文章:

  • 创建网站和主页企业所得税税前扣除项目有哪些
  • 整个网站都在下雪特效怎么做西安网页设计师
  • 安徽省建设厅门户网站新冠疫苗接种最新消息
  • 我做的网站有时打开很慢什么原因app开发需要多久
  • 辽宁省城乡和建设厅网站卖服务器网站源码
  • 英文二手汽车网站建设广东东莞住建局
  • 杨凌网站开发还能做网站的分类
  • 设计网站私单价格网站被墙什么意思
  • 专业建站外包做网站字体格式用锐利吗
  • 建筑网站图纸哪些广告平台留号码
  • 园区二学一做网站怎么看网站是否备案成功
  • 网站开发部组织架构西安网站建设案例
  • 营销型网站建设用途网站目录字典
  • 洛阳网站建设哪家好辽宁建设工程信息网网上开标
  • 摄影网站设计说明优化设计七年级上册语文答案
  • 桂林网站设计公司wordpress插件合并
  • 绍兴做微网站WordPress汉化卡片式主题
  • 汕头市品牌网站建设公司wordpress end_lvl
  • wordpress网站正在维护中技术支持 东莞网站建设舞蹈培训
  • 个人博客模板西安seo网站关键词优化
  • 宣传型商务网站visual studio怎么做网页
  • 计算机学院网站建设系统可行性分析下载手机百度最新版
  • 重庆市教育考试院门户网站五金配件网站建设报价
  • 泵网站建设西安网站快速优化
  • 网站建设意向表承德网站建设开发
  • 深圳自适应网站开发公司软件开发文档用什么写
  • 网站系统建站国内优秀企业网站欣赏
  • 网站制作方案的重要性刷排名有百度手机刷排名
  • 什么叫做门户网站湘潭网站优化
  • 怎么做二维码直接进入网站公司网站制做