工厂模式(简单工厂、工厂方法、抽象工厂)(1)

简介: 工厂模式(简单工厂、工厂方法、抽象工厂)(1)

简单工厂模式


     从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。


简单工厂模式的一般结构,如图所示:

3.png

4.png

上门2个图片有对简单工厂模式的理解,来源《java与模式》



使用场景


工厂类负责创建的对象比较少。


客户端只知道传入工厂类的参数,对于如何创建对象并不关心。



l 工厂角色


l 抽象产品角色


l 具体产品角色


  其实角色这个词用的比较确切,能够让我们理解到,每个角色的不是单纯地指一个类,可能是一组类所构成了这个角色。下面对三个角色进行描述:


1. 工厂角色


 工厂角色负责产品的生产工作。在简单工厂模式中,工厂类是一个具体的实现类,在系统设计中工厂类负责实际对象的创建工作。


 工厂类(Factory)的特点是:它知道系统中都存在哪些能够创建对象的具体类(ConcreteProduct),也知道该如何将创建的对象,以某种能够屏蔽具体类实现细节的方式(AbstractProduct)提供给所需要的其他角色来使用该对象提供的数据和服务。


2.抽象产品角色


 抽象产品角色是具体的产品的抽象。抽象就是将产品的共性抽取出来,可以直接暴露给客户端(需要使用具体产品的角色),对所有的客户端来说,从工厂中直接获取到的原始产品的外部形态都是相同的,没有任何的差别,包括数据和服务。这也就是说,具体客户端应该“秘密”掌握着某一个或一些具体产品的详细资料(具体产品类型、数据和服务),然后根据具体客户端(任何一个需要使用某种具体产品的数据和服务的实现类)需要什么样的附加数据和服务,进行类类型转换后,通过借助于对应的具体产品对象来完成其职责。


 抽象产品角色,在实际系统中可以定义为接口或者抽象类。



相关文章
|
5月前
|
设计模式 Java
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
抽象工厂和工厂方法对比
抽象工厂和工厂方法对比
60 0
|
6月前
创建型 简单工厂(工厂方法)模式
创建型 简单工厂(工厂方法)模式
58 1
|
设计模式 Java
设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
71 0
工厂方法模式是怎么变抽象工厂的
工厂方法模式是怎么变抽象工厂的
31 0
|
C++
工厂方法VS简单工厂
工厂方法VS简单工厂
54 0
简单工厂、工厂、抽象工厂总结
简单工厂、工厂、抽象工厂总结
46 0
|
设计模式
大话设计模式-三种工厂模式(简单工厂、工厂方法、抽象工厂)
大话设计模式-三种工厂模式(简单工厂、工厂方法、抽象工厂)
|
C# uml
C#简单工厂总结
C#简单工厂总结
45 0
|
设计模式 缓存 Java
简单工厂不简单
简单工厂不简单
简单工厂不简单