Skip to content

Latest commit

 

History

History
68 lines (61 loc) · 1.45 KB

File metadata and controls

68 lines (61 loc) · 1.45 KB

Abstract Factory

https://refactoring.guru/ja/design-patterns/abstract-factory

classDiagram
  class Client

  namespace factory {
    class AbstractProductA {
      executeA()
      executeB()
    }
    class AbstractProductB {
      doAlpha()
      doBeta()
    }
    class AbstractFactory {
      createProductA()
      createProductB()
    }
  }
  namespace concretefactory {
    class ConcreteFactory1 {
      createProductA()
      createProductB()
    }
    class ConcreteProductA1 {
      executeA()
      executeB()
    }
    class ConcreteProductB1 {
      doAlpha()
      doBeta()
    }
    class ConcreteFactory2 {
      createProductA()
      createProductB()
    }
    class ConcreteProductA2 {
      executeA()
      executeB()
    }
    class ConcreteProductB2 {
      doAlpha()
      doBeta()
    }
  }

  Client ..> AbstractFactory: use
  Client ..> AbstractProductA: use
  Client ..> AbstractProductB: use

  AbstractFactory --> AbstractProductA: create
  AbstractFactory --> AbstractProductB: create

  ConcreteFactory1 ..> ConcreteProductA1: create
  ConcreteFactory1 ..> ConcreteProductB1: create
  ConcreteFactory2 ..> ConcreteProductA2: create
  ConcreteFactory2 ..> ConcreteProductB2: create

  ConcreteFactory1 --|> AbstractFactory
  ConcreteFactory2 --|> AbstractFactory
  ConcreteProductA1 --|> AbstractProductA
  ConcreteProductA2 --|> AbstractProductA
  ConcreteProductB1 --|> AbstractProductB
  ConcreteProductB2 --|> AbstractProductB
Loading