#MOC
[[🗃️デザインパターン]]の1つ。
[[🗃️インスタンス]]の生成を専門に行う[[🗃️クラス]]を作ることで、一連の[[🗃️オブジェクト]]群を正確に生成するためのパターン。
```mermaid
classDiagram
UIAbstractFactory <|.. LightThemeFactory
UIAbstractFactory <|.. DarkThemeFactory
Button <|.. LightButton
Button <|.. DarkButton
Modal <|.. LightModal
Modal <|.. DarkButton
class UIAbstractFactory{
}
class LightThemeFactory{
}
class DarkThemeFactory{
}
class Button{
}
class LightButton{
}
class DarkButton{
}
class Modal{
}
class LightModal{
}
class DarkModal{
}
```
```php
interface UIAbstractFactory {
public function createButton();
public function createModal();
// Add other UI components...
}
class LightThemeFactory implements UIAbstractFactory {
public function createButton() {
return new LightButton();
}
public function createModal() {
return new LightModal();
}
// Implement other UI components...
}
class DarkThemeFactory implements UIAbstractFactory {
public function createButton() {
return new DarkButton();
}
public function createModal() {
return new DarkModal();
}
// Implement other UI components...
}
interface Button {}
class LightButton implements Button {}
class DarkButton implements Button {}
interface Modal {}
class LightModal implements Modal {}
class DarkModal implements Modal {}
// Client code
function renderUI(UIAbstractFactory $factory) {
$button = $factory->createButton();
$modal = $factory->createModal();
// Render the UI with the created components...
}
// Use Light theme
renderUI(new LightThemeFactory());
// Use Dark theme
renderUI(new DarkThemeFactory());
```
## 📚ドキュメント
- [8. AbstractFactory パターン | TECHSCORE(テックスコア)](https://www.techscore.com/tech/DesignPattern/AbstractFactory)
## 📖ノウハウ
## 💁トラブルシューティング