美文网首页
python设计模式 - 工厂模式之简单工厂

python设计模式 - 工厂模式之简单工厂

作者: RedGecko | 来源:发表于2019-02-11 22:53 被阅读5次

    python 环境

    python==3.7.2
    

    工厂模式简介

    在面向对象中,“工厂”表示一个负责创建其他类型对象的类。客户端通过传参调用工厂类对象的不同方法,工厂类根据参数创建类对象并返回给客户端。这里通常会有个疑问,既然客户端可以自己创建类对象,为何还要通过工厂来创建呢?这就要说到工厂模式的优点啦。

    1. 松耦合
      类对象的创建可以独立于类的实现方法
    2. 封装性好
      客户端无需知道如何创建类对象,只需了解工厂类的接口,方法和参数,即可创建类对象。简化了客户端操作。
    3. 高扩展性
      可轻松在工厂类中增加方法类创建其他类对象,而客户端无需修改代码
    4. 可控性强
      工厂类的方法在返回对象时,可以重用现有对象,而客户端创建则每次都要返回新对象。

    简单工厂模式

    简单工厂模式并不能算作一种设计模式,更应该归类于一种编程习惯。它允许接口创建对象,而不用暴露对象的创建逻辑。

    简单工厂模式实现

    from abc import ABCMeta, abstractmethod
    
    
    class Animal(metaclass=ABCMeta):
        @abstractmethod
        def run(self):
            pass
    
    
    class Dog(Animal):
        def run(self):
            print("dog running")
    
    
    class Fish(Animal):
        def run(self):
            print("fish swimming")
    
    
    class Bird(Animal):
        def run(self):
            print("bird flying")
    
    
    class AnimalFactory(object):
        @staticmethod
        def animal_run(animal_type):
            try:
                eval(animal_type)().run()
            except NameError:
                print("animal_type not supported")
    
    
    if __name__ == '__main__':
        animal_factory = AnimalFactory()
        animal_factory.animal_run('Bird')
        animal_factory.animal_run('Fish')
        animal_factory.animal_run('Dog')
        animal_factory.animal_run('aaa')
    

    简单工厂模式缺点

    简单工厂模式最大的弊病在于,工厂类的职责过重,每增加一个类型,都要修改工厂类的代码,在工厂中管理的类型较多时,工厂逻辑将会过于复杂,难以维护。

    相关文章

      网友评论

          本文标题:python设计模式 - 工厂模式之简单工厂

          本文链接:https://www.haomeiwen.com/subject/ddsceqtx.html