模式简介

工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:
1. 简单工厂模式(Simple Factory)
2. 工厂方法模式(Factory Method)
3. 抽象工厂模式(Abstract Factory)

工厂方法模式是对简单工厂模式的抽象升级,定义一个用于创建对象的接口,让子类决定实例哪个类。工厂方法使一个类实例化延迟到其子类。

与简单工厂模式相比,简单工厂模式使得工厂的负担过重,而且每次添加新产品,都需要修改工厂,不符合开闭原则。

工厂方法模式的重点就在这个工厂接口了。目标可以无限扩展,工厂类也要随之扩展,一对一存在,满足了开闭原则,但如果目标实现较多,工厂实现类也会增多,不简洁。

实际应用场景

MyBatis中使用的比较多,事务模块和数据源模块都使用了工厂方法模式。

UML类图

案例:汽车生产

Car
/*** @Author l'amour solitaire* @Description 汽车* @Date 2020/11/19 下午1:58**/
public interface Car {/*** 汽车品牌**/String carName();
}
BenzCar
/*** @Author l'amour solitaire* @Description 奔驰* @Date 2020/11/19 下午2:09**/
public class BenzCar implements Car {@Overridepublic String carName() {return "Benz";}
}
BmwCar
/*** @Author l'amour solitaire* @Description 宝马* @Date 2020/11/19 下午2:09**/
public class BmwCar implements Car {@Overridepublic String carName() {return "BMW";}
}
CarFactory
/*** @Author l'amour solitaire* @Description 汽车工厂* @Date 2020/11/19 下午2:02**/
public interface CarFactory {/*****/Car createCar();
}
BeezCarFactory
/*** @Author l'amour solitaire* @Description 奔驰汽车工厂* @Date 2020/11/19 下午2:03**/
public class BeezCarFactory implements CarFactory {@Overridepublic Car createCar() {return new BenzCar();}
}
BmwCarFactory
/*** @Author l'amour solitaire* @Description 宝马汽车工厂* @Date 2020/11/19 下午2:03**/
public class BmwCarFactory implements CarFactory {@Overridepublic Car createCar() {return new BmwCar();}
}

测试

@SpringBootTest
class DesignApplicationTests {@Testvoid test() {CarFactory carFactory = new BeezCarFactory();System.out.println(carFactory.createCar().carName());carFactory = new BmwCarFactory();System.out.println(carFactory.createCar().carName());}}

欢迎关注公众号《JAVA拾贝》回复: 设计模式 即可获取

常用设计模式-工厂方法相关推荐

  1. Spring常用设计模式--工厂方法模式

    本专栏内容参考自:咕泡学院Tom老师的<Spring5核心原理与30个类手写实战>,仅作个人学习记录使用,如有侵权,联系速删.   工厂方法模式指定义一个创建对象的接口,但让实现这个接口的 ...

  2. 设计模式 工厂方法_使用工厂方法模式设计最佳实践

    设计模式 工厂方法 在前面的"设计模式"示例中,我们解释了当今常用的"工厂"模式. 在本节中,我们将了解具有更多抽象的更高级的解决方案. 该模式称为工厂方法设计 ...

  3. 设计模式 工厂方法_工厂方法设计模式

    设计模式 工厂方法 工厂方法模式是流行的创作设计模式之一. 它并不特别依赖于工厂对象来创建对象. 而是要在同一类中使用单独的方法来创建对象. Factory Method模式定义了一个用于创建对象的接 ...

  4. 设计模式 工厂方法_工厂设计模式–一种有效的方法

    设计模式 工厂方法 如您所知,"工厂方法模式"或俗称"工厂设计模式"是"创意设计模式"类别下的一种设计模式. 模式背后的基本原理是,在运行时 ...

  5. 4. 星际争霸之php设计模式--工厂方法模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  6. java 工厂方法_java设计模式-工厂方法模式

    1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...

  7. Java常用设计模式————工厂模式

    简介: 工厂模式(Factory Pattern)是Java中最常用的设计模式之一,又称多态工厂模式.虚拟构造器模式.属于创建型模式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通 ...

  8. JAVA设计模式 - 工厂方法模式

    工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...

  9. Java设计模式—工厂方法模式抽象工厂模式

    工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式.       工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...

最新文章

  1. 一个简单的程序来使用WiredTiger 存储引擎
  2. PDF文字怎么编辑,PDF文档编辑方法
  3. 网页标准HTML5标准较量正酣
  4. Libra深度解析!
  5. [转载] NoSQL开篇——为什么要使用NoSQL
  6. 在Win平台得到磁盘、CPU、用户信息
  7. [20190805]在小程序中使用npm包
  8. 谷歌guava_Google Guava MultiMaps
  9. sqlldr导入数据到数据库
  10. LeetCode 1473. 给房子涂色 III(DP)
  11. spark学习-30-spark2.2.0的SparkContext初始化
  12. 4.19、Bootstrap V4自学之路-----内容---提示冒泡
  13. 循环冗余检错码CRC
  14. Apache Hadoop YARN
  15. 华为端口聚合命令_华为交换机两种端口聚合模式使用实例
  16. CCS软件的基础使用(以点灯为例)
  17. 通王CMS采集-TWCMS文章采集-通王CMS关键词采集伪原创发布详解
  18. 关于计算机组装与维护的论文,计算机组装与维护论文范文
  19. 【转载】史上最深(sàng)入(xīn)浅(bìng)出(kuáng)的IT术语解读【多测师_何sir】
  20. Scanner扫描仪的使用方法

热门文章

  1. 常用训练tricks,提升你模型的鲁棒性
  2. 鸿蒙记 四十四,书画装裱谨记的四十个小窍门
  3. H3C开启DHCP配置
  4. 装饰模式模拟变形金刚
  5. diskspd磁盘测试软件的使用
  6. 视频批量剪辑,教你制作视频水平翻转的方法
  7. 红警2的经验和秘籍及不是秘笈的秘笈(3)
  8. curl 命令 详解
  9. 普通人解决问题,高手解决提出问题的人
  10. java构造器(构造方法)用private和public修饰的区别