Skip to content

Latest commit

 

History

History
41 lines (27 loc) · 851 Bytes

File metadata and controls

41 lines (27 loc) · 851 Bytes

Abstract Factory Pattern

Code Example

class AbstractFactory(object):
    def create_product(self, *args):
        raise NotImplementedError()


class ConcreteFactory(AbstractFactory):
    def create_product(self, *args):
        return Product()


class Product(object):
    @staticmethod
    def do_something():
        print('This is product.')


class Client(object):
    def __init__(self, factory: AbstractFactory):
        self.factory = factory

    def get_product(self):
        product = self.factory.create_product()
        product.do_something()

if __name__ == '__main__':
    factory = ConcreteFactory()
    client = Client(factory)
    client.get_product()  # This is product.

Related Patterns

  • AbstractFactory는 FactoryPrototype 으로 구현
  • ConcreteFactory는 Singleton 으로 구현