2019-04-21 00:05:50
概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。
Stateパターンとは状態をクラスで用意することで振る舞いを切り替えることができるようなパターン。
実装スイッチのオンオフの状態を切り替えるような例を想定した。シングルトンを使ったほうが良い気がする。
<?php
class OnState
{
public function getState()
{
return 'ON';
}
public function getNextState()
{
return ne...
アプリケーション
GoF
PHP
デザインパターン
ステートパターン
2019-02-01 00:52:07
概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。
Bridgeパターンとは機能拡張のためのスーパークラスと実装拡張のためのサブクラスを用意し、機能の橋渡しをするようなパターン。
実装<?php
interface Connector
{
public function __construct(Converter $converter);
public function connect();
}
class IphoneConnector implements Connector
{
private $conver...
アプリケーション
GoF
PHP
デザインパターン
ブリッジパターン
2019-02-01 01:57:44
概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。
Adaperパターンとは元となるクラスに修正を加えることなくインターフェースを変更することができるパターン。
異なるインターフェース間の互換性を調整するようなAdapterクラスを用意することで実現する。
実装<?php
interface Bird
{
public function fly();
}
class SmallBird implements Bird
{
public function fly()
{
echo 'fly short...
アプリケーション
アダプターパターン
GoF
PHP
デザインパターン
2019-01-31 23:52:15
概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。
Mediatorパターンとは仲介者・調停者の意味。
オブジェクトの振る舞いに関するデザインパターンで、オブジェクト間のやりとり調整するためのパターン。
オブジェクト同士のやり取りが複雑化し、関係性が見えにくくなるような時に有用かもしれない。
実装<?php
// Mediator
class Receptionist
{
public function checkIn(User $user, $message) // 振る舞いの操作を任せたいオブジェクトを保持
{...
アプリケーション
PHP
デザインパターン
メディエーターパターン
GoF
2018-12-09 10:25:43
概要この記事はPHPで学ぶデザインパターン Advent Calendar 2018の記事です。
今回はStrategyパターンについてかきます。
Strategyパターンとは?Strategyパターンは、アルゴリズムの切り替えを容易にするようなパターンです。異なる処理をそれぞれ別のクラスに定義するため、 処理を動的に選択できるだけでなく、条件分岐を減らすことも可能としてします。OCP(open/closed principle)に忠実なパターンの一つでもあります。
実装例単純な例でStrategyパターンの実装を見てみます。
<?php
class Context
{
priv...
アプリケーション
デザインパターン
PHP
GoF
ストラテジーパターン
2018-12-01 23:15:50
この記事はPHPで学ぶデザインパターン Advent Calendar 2018の記事です。
概要Factory・Factory Method・Abstract Factoryについてかきます。
Factoryパターンについて知るまずはFactoryパターンについてざっくり説明します。
interface Robot
{
public function say();
}
class BlueRobot implements Robot
{
private $color;
public function __construct($color)
{...
アプリケーション
デザインパターン
GoF
PHP
アブストラクトファクトリーパターン
ファクトリーパターン
ファクトリーメソッドパターン