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
デザインパターン
Bridge
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...
プログラミング
adapter
GoF
php
デザインパターン
2019-01-31 23:52:15
概要PHPで学ぶデザインパターン Advent Calendar 2018で間に合わなかった記事。
Mediatorパターンとは仲介者・調停者の意味。
オブジェクトの振る舞いに関するデザインパターンで、オブジェクト間のやりとり調整するためのパターン。
オブジェクト同士のやり取りが複雑化し、関係性が見えにくくなるような時に有用かもしれない。
実装<?php
// Mediator
class Receptionist
{
public function checkIn(User $user, $message) // 振る舞いの操作を任せたいオブジェクトを保持
{...
プログラミング
php
デザインパターン
Mediator
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
strategy
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
abstract factory
factory
factory method
2018-06-08 02:18:43
概要DIとService Locatorの違いについてまとめる
DIとは
デザインパターンの一種
依存性注入
オブジェクト間の依存性を分離
オブジェクトの実行時に必要なオブジェクトが注入されるようにする
テストしやすくなる
DIパターンの実装DIパターン(コンストラクタインジェクション)を実装してみる。なお、DIパターンには、コンストラクタインジェクション、セッターインジェクション、メソッドインジェクションなどコンストラクタ以外からDIする方法もある。比較のためにDIではないパターンとDIのパターンの両方を実装する。
DIではないパターン<?php
class SlackNotif...
プログラミング
DI
サービスロケーター
デザインパターン
2016-12-01 16:17:16
概要今は絶版になっているPHPによるデザインパターン入門を教科書にして、PHPでデザインパターンを学びます。(※Amazonで中古がありますが、定価の倍以上の値段が付いているようです。)
本連載で扱うコードはgithubにまとめていきます。
本来であれば、OOPの先駆けである言語でデザインパターンを学びたいところでしたが、PHP以外の言語の素養がなかったことと、PHPでデザインパターンを解説している本に出会ったことから、PHPでデザインパターンを学んでみることにしました。
参考 PHPによるデザインパターン入門
Do You PHP はてな Github shimooka/Php...
プログラミング
デザインパターン
php
oop
2016-12-02 16:14:48
Template Method パターンとは?似たような処理を枠組み(型)としてスーパークラスで定義し、より具体的な処理内容をサブクラスで実装するというパターンです。単なる継承ではなく、具体的な処理内容を抽象メソッドとして定義することで、スーパークラスのメソッドの実装を保証し、クラスの振る舞いをサブクラスによって定義させる継承を利用したパターンです。
構造AbstractClass処理の枠組みを定義するクラスで、枠組みを定義するメソッド(template method)とそれを利用するメソッドを含みます。
ConcreteMethodAbstractClassを継承するサブクラスで、Abstr...
プログラミング
デザインパターン
php
templatemethod
2016-12-04 16:13:57
Singleton パターンとは?インスタンス生成のコストを制御するために、インスタンスが1つしかないことを保証するパターンです。
構造SingletonClasspriavateのコンストラクタとインスタンスを1つだけ返すstaticメソッドと自分自身のインスタンスを保持するためのstatic変数を用意するだけです。
メリットインスタンスへのアクセスを制御できるSingletonパターンが保持する自分自身へのアクセスをprivateに制限しているためクライアント側のコードからのアクセスを制御することができます。
インスタンス数を変更することができる生成されるインスタンスの数を2つ以上に変更す...
プログラミング
デザインパターン
php
singleton
2016-12-08 16:13:11
Adapter パターンとは?API(互換性のないインターフェース)同士を適合させるためのパターンです。既存のコードの変更をせずに、再利用することで新しい機能を提供するというものです。再利用するコードには変更を加えないというのが特徴です。主にコードを再利用するためという後天的理由から成り立っているパターンです。(設計段階でラッパーを用意するパターンはBridgeパターンです。)
構造##TargetClassAPI(インターフェース)の定義をします。
AdapteeClassTargetClassに適合させる既存のAPIを提供します。
AdapterClassAdapteeClassのAPIを...
プログラミング
php
adapter
デザインパターン