デザインパターン-作成タイプ-単純なファクトリパターン

シンプルなファクトリパターン

概要概要

  • オブジェクト作成の実装の詳細をクライアントに直接公開しないでください。ただし、ファクトリクラスを使用して、製品クラスのインスタンスの作成を担当してください。

キャラクター

  • 工場の役割(作成者)
  • 抽象製品の役割(製品)
  • コンクリート製品(コンクリート製品)

example: 最简单实现,旨在理解一些设计模式概念
from abc import ABCMeta,abstractmethod
# 抽象产品角色
class Animal(metaclass=ABCMeta):
    
    @abstractmethod
    def walk(self):
        pass

# 具体产品角色
class Rabbit(Animal):
    def walk(self):
        print("兔子行走")

class Duck(Animal):
    def walk(self):
        print("鸭子行走")

# 工厂角色
class AnimalFactory:
    def create_animal(self, animal_type):
        if animal_type == "rabbit":
            return Rabbit()
        if animal_type == "duck":
            return Duck()
        return None

利点

  • 隠しオブジェクト作成の実装の詳細
  • クライアントはコードを変更する必要はありません

不利益

  • 単一責任の原則に違反し、作成ロジックをファクトリクラスに統合する
  • 開閉の原則に違反しているため、新製品を追加する際に工場コードを変更する必要があります

おすすめ

転載: blog.csdn.net/DALAOS/article/details/113178749