#MOC 共通点を基底クラスにもたせて、派生クラスに[[🗃️インスタンス生成]]の処理を定義するパターン。 ```mermaid classDiagram AnimalFactory <|.. DogFactory AnimalFactory <|.. CatFactory DogFactory : +createAnimal() CatFactory : +createAnimal() Animal <|.. Dog Animal <|.. Cat Animal : +makeSound() Dog : +makeSound() Cat : +makeSound() class AnimalFactory{ +createAnimal() +makeAnimalMakeSound() } class DogFactory{ +createAnimal() } class CatFactory{ +createAnimal() } ``` ```php abstract class Animal { abstract public function makeSound(); } class Dog extends Animal { public function makeSound() { echo "Woof!\n"; } } class Cat extends Animal { public function makeSound() { echo "Meow!\n"; } } abstract class AnimalFactory { abstract public function createAnimal(); public function makeAnimalMakeSound() { $animal = $this->createAnimal(); $animal->makeSound(); } } class DogFactory extends AnimalFactory { public function createAnimal() { return new Dog(); } } class CatFactory extends AnimalFactory { public function createAnimal() { return new Cat(); } } // Client code $dogFactory = new DogFactory(); $dogFactory->makeAnimalMakeSound(); // Outputs: Woof! $catFactory = new CatFactory(); $catFactory->makeAnimalMakeSound(); // Outputs: Meow! ``` ## 📚ドキュメント - [4. FactoryMethod パターン | TECHSCORE(テックスコア)](https://www.techscore.com/tech/DesignPattern/FactoryMethod) ## 📖ノウハウ ## 💁トラブルシューティング