カテゴリー:
デザインパターン
閲覧数:386 配信日:2018-07-30 10:49
デザインパターンを使用しないと?
ソフトウェアを何度も設計する場合
・共通する機能や問題を解決するために毎回ゼロから設計
・非常に効率が悪い
デザインパターンを使用すると?
デザインパターンを使用して設計されたクラス
・クラスどうしの関係がゆるくなる(疎結合)
※良い設計の重要なポイントの1つ
・クラス同士の関係がゆるければゆるいほど、独立性が高くなる
→ 再利用性が高くなる
利用範囲で分類
生成 | 構造 | 振る舞い | |
---|---|---|---|
クラス | Factory Method | Adapter | Interpreter、Template |
オブジェクト | Abstract Factory、Builder、Prototype、Singleton | Adapter、Bridge、Composite、Decorator、Façade、Flyweight、Proxy | Chain of Responsibility、Command、Iterator、Mediator、Memento、 Observer、State、Strategy、Visitor |
静的動的
静的
・クラス定義時点でクラス同士の関係が決定
<?php
class SomeClass
{
:
}
/**
* この時点でクラスどうしの関係が決まる
*/
class AnotherClass extends SomeClass
{
:
}
動的
・オブジェクトどうしの関係を実行時に決定
・クラス内部でnew演算子を使ってインスタンスを生成し、オブジェクト同士の関係を決めるコードの例
<?php
:
class SomeClass
{
private $object;
:
public function SomeMethod()
{
/**
* このタイミングでオブジェクトどうしの関係が決まる
*/
$this->object = new AnotherClass();
:
}
}
・アクセサメソッドを使ってオブジェクトを他のオブジェクトに挿入することで、オブジェクト同士の関係を決める例
<?php
:
$object = new SomeClass();
$another_object = new AnotherClass();
/**
* このタイミングでオブジェクトどうしの関係が決まる
*/
$object->setObject($another_object);
:
PHPによるデザインパターン入門
“デザインパターン” の検索結果
デザインパターンを読み解く
サルでもわかる 逆引きデザインパターン
デザインパターン (ソフトウェア)
ryo-utsunomiya/gof_design_patterns_in_php: Sample implementations of GoF Design Patterns in PHP
デザインパターン入門