シンプルなデザイン
デザインモード
こうじょう
サンプルコード
class AUtomobile
{
private $vehicleMake;
private $vehicleModel;
public function __construct($make, $model)
{
$this->vehicleMake = $make;
$this->vehicleModel = $model;
}
public function getMakeAndModel()
{
return $this->vehicleMake.' '.$this->vehicleModel;
}
}
class AutomobileFactory()
{
public static function create($make, $model)
{
return new Automobile($make, $model);
}
}
//Automobile 객체를 생성하는 팩토리사용
$veyron = AutomobileFactory::create('Bugatti', 'Veyron');
print_r($veyron->getMakeAndModel());//Bugatti Veyron 출력
メリットたんりん
注意事項
construct()
は、他の場所で勝手に生成されないように、新しい演算子を使用して保護する__clone
はプライベートに制限され、クローン演算子を使用してコピーすることはできません.__wakeup
はプライベートであり、グローバル関数unserialize
は使用できない.getInstance()
内で遅延する静的バインディングによって作成される.戦略(Strategy)
-出力クラスの実施者ごとに遵守すべき実施規則を提供する
-一般的な「Output Interface」インタフェースを使用して、アルゴリズムを使用するコード・ページにも正しいタイプの
<?php
interface OutputInterface
{
public function load();
}
class SerializedArrayOutput implements OutputInterface
{
public function load()
{
return serialize($arrayOfData);
}
}
class JsonStringOutput implements OutputInterface
{
public function load()
{
return json_encode($arrayOfData);
}
}
class ArrayOutput implements OutputInterface
{
public function load()
{
return $arrayOfData;
}
}
---
class SomeClient
{
private $output;
public function setOutput(OutputInterface $outputType)
{
$this->output = $outputType;
}
public function loadOutput()
{
return $this->output->load();
}
}
---
$client = new SomeClient();
// 배열 형태의 출력을 원한다면?
$client->setOutput(new ArrayOutput());
$data = $client->loadOutput();
// JSON 형태를 원한다면?
$client->setOutput(new JsonStringOutput());
$data = $client->loadOutput();
フロントエンドコントローラ
MVC(Model-View-Controller)
Reference
この問題について(シンプルなデザイン), 我々は、より多くの情報をここで見つけました https://velog.io/@ein214/간단하게-정리해뒀던-디자인패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol