zl程序教程

您现在的位置是:首页 >  后端

当前栏目

设计模式之工厂模式详解大数据

模式数据设计模式 详解 工厂
2023-06-13 09:20:26 时间

简单工厂模式的回顾:

简单工厂模式是指专门定义一个工厂类来负责创建产品类的实例,被创建的产品通常都具有共同的父类。

包含三个角色:

简单工厂(SimpleProductFactory)角色:工厂模式的核心,负责生产具体的产品。工厂类可以被外部用户即客户端调用,创建产品对象,从而实现外部用户即客户端和产品对象的解耦。

抽象产品(Product)角色:简单工厂模式所创建的具体产品对象的父类,负责描述所有产品对象的共有特征。
具体产品(Concrete Product)角色:是指具体的产品,是客户端调用工厂的目的就是获取产品对象,在工厂模式中通常拥有多个具体产品。一般来讲是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。

简单工厂模式优点:客户端与工厂进行交互,不再负责生产具体的产品对象,从而实现了解耦合。(单一职责,实现了解耦合)。

简单工厂模式缺点:由于这个工厂类负责全部的具体产品的创建,那么具体产品类特别多时,我们就需要去修改工厂的代码,从而增大了维护难度,这样就违反了设计模式经典的开闭原则。

解决这个缺点的方案就是工厂模式。

 

 

工厂模式组成: 
1、抽象工厂角色(ProductFactory):是具体工厂角色必须继承的父类(Java中也可以通过实现接口来完成),这是工厂模式的核心。
2、具体工厂角色(ConcreteProductFactory):类似于简单工厂模式中的简单工厂角色,负责生产具体的产品对象。 
3、抽象产品角色(Product):与简单工厂模式中的抽象产品角色一样,它是具体产品继承的父类(Java中也可以实现接口)。

4、具体产品角色(ConcreteProduct):简单工厂模式中的抽象产品角色一样,是指具体的产品,是客户端调用工厂的目的就是获取产品对象,在工厂模式中通常拥有多个具体产品。一般来讲是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。

设计模式之工厂模式详解大数据

 

 

举个栗子:

class Foot: 

 "食品父类" 

 def produce(self): 

 print("Foot is produced") 

class Noodles (Foot): 

 "面条子类" 

 def produce(self): 

 print("Noodles is produced") 

class Rice(Foot): 

 "米饭子类" 

 def produce(self): 

 print("Rice is produced")