二十三种设计模式-工厂方法模式

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
工厂方法模式是一种创建型设计模式,其核心思想是通过界说一个创建对象的接口,让子类决定实例化哪一个类。工厂方法模式将对象的实例化推迟到子类中进行,从而使得扩展变得轻易,而不必要修改现有的代码,符合开闭原则(对扩展开放,对修改封闭)。
工厂方法模式的重要脚色


  • 抽象产品(Product):界说了产品的接口,规定了全部详细产品都必须服从的接口。
  • 详细产品(Concrete Product):实现或继承抽象产品脚色所界说的接口,由详细工厂类创建。
  • 抽象工厂(Creator):声明了一个工厂方法,返回一个产品范例的对象。此方法由子类实现以创建详细产品对象。
  • 详细工厂(Concrete Creator):实现抽象工厂的工厂方法,生成一个详细的产品实例。
工厂方法模式的实现步调


  • 界说抽象产品:创建一个抽象类或接口,界说产品的共有接口。
  • 实现详细产品:为每种产品提供一个详细的类,实现或继承抽象产品类。
  • 界说抽象工厂:创建一个抽象类或接口,其中包含一个工厂方法,该方法返回一个抽象产品范例的对象。
  • 实现详细工厂:为每种详细产品提供一个详细的工厂类,实现抽象工厂中的工厂方法,生成详细产品对象。
工厂方法模式的代码示例

  1. // 抽象产品
  2. interface Product {
  3.     void use();
  4. }
  5. // 具体产品A
  6. class ConcreteProductA implements Product {
  7.     public void use() {
  8.         System.out.println("Using ConcreteProductA");
  9.     }
  10. }
  11. // 具体产品B
  12. class ConcreteProductB implements Product {
  13.     public void use() {
  14.         System.out.println("Using ConcreteProductB");
  15.     }
  16. }
  17. // 抽象工厂
  18. interface Creator {
  19.     Product factoryMethod();
  20. }
  21. // 具体工厂A
  22. class ConcreteCreatorA implements Creator {
  23.     public Product factoryMethod() {
  24.         return new ConcreteProductA();
  25.     }
  26. }
  27. // 具体工厂B
  28. class ConcreteCreatorB implements Creator {
  29.     public Product factoryMethod() {
  30.         return new ConcreteProductB();
  31.     }
  32. }
  33. // 客户端代码
  34. public class FactoryMethodPatternDemo {
  35.     public static void main(String[] args) {
  36.         // 客户可以选择使用具体工厂A或B
  37.         Creator creatorA = new ConcreteCreatorA();
  38.         Product productA = creatorA.factoryMethod();
  39.         productA.use();
  40.         Creator creatorB = new ConcreteCreatorB();
  41.         Product productB = creatorB.factoryMethod();
  42.         productB.use();
  43.     }
  44. }
复制代码
工厂方法模式的优点


  • 代码的扩展性:增加新产品和新工厂类时,不必要修改已有代码。
  • 解耦:客户端不必要知道详细的产品类,只必要知道产品接口。
  • 封装性:详细的创建逻辑被封装在工厂类内部。
工厂方法模式的缺点


  • 类的个数增多:每增加一个产品,就必要增加一个详细的工厂类。
  • 体系的复杂度提高:对于新的开发者来说,明确体系结构可能必要更多的时间。
工厂方法模式是实现对象创建和对象使用分离的有效手段,特别适用于必要根据条件动态创建对象的场景。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表