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

简单工厂模式的回顾:

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

  

  包含三个角色:

  简单工厂(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") 
 
 
class FootFactory: 
    '''食品工厂''' 
    def product(self): 
        return Foot() 
  
class NoodleFactory: 
    '''面条工厂''' 
    def product(self): 
        return Noodles() 
 
class RiceFactory: 
    '''米饭工厂''' 
    def product(self): 
        return Rice() 
 
if __name__ == '__main__': 
    #根据不同的工厂生产不同的食物 
    noodlefactory = AppleFactory() 
    noodle= noodlefactory .product() 
    noodle.produce() 
     ricefactory = RiceFactory() 
    rice= ricefactory .product() 
    rice.produce()

当有新的产品产生时,只要按照抽象产品角色、抽象工厂角色来生成对应的具体的产品和具体的工厂,那么就可以被客户端使用,而不必去修改任何已有的代码。可以看出工厂角色的结构设计是符合开闭原则

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/9231.html

(0)
上一篇 2021年7月19日 09:19
下一篇 2021年7月19日 09:19

相关推荐

发表回复

登录后才能评论