スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【PHP】デザインパターン::Compositeパターン

少しデザインパターンについて書き残しておきます。

一つのオブジェクトに情報をあれこれ持たせすぎてカオスになることがたまにあると思います。

そんなとき分かりやすく役割を分担してクラスを分けてみるのはどうでしょう?
というのが、Compositeパターンだと思います。

今回の例の場合、
当初Customerクラスにお客さんの名前、住所を持たせようと思ったのですが

それをCustomerName、CustomerAddressクラスを作り、それらのインスタンスをCustomerクラスに持たせればいいのではないか?

というのがCompositeパターンの今回の実例という感じです。(今回は分割しなくても大丈夫な情報量ですが、情報量が多くになるにつれてこのパターンの良さを実感できます)

以下にコードの例を書き残しておきます。

このようにしておくことで、再利用性、可読性がともにあがりそうですね。

<?php
class CustomerName{
public $sFirstName = '';
public $sLastName = '';
};

class CustomerAddress{
public $sPrefecture = '';
public $sCity = '';
public $sAddress = '';
public $sZip = '';
};

class Customer{
public $iId;
public $oName;
public $oAddress;

function __construct(){
$this->oName = new CustomerName;
$this->oAddress = new CustomerAddress
}

public function setData(){
$this->iId = 23;
$this->oName->sFirstName = 'Taro';
$this->oName->sLastName = 'Yamada';
$this->oAddress->sPrefecture = 'Tokyo';
$this->oAddress->sCity = 'Nerima';
$this->oAddress->sAddress = 'hogehoge1-1-1';
$this->oAddress->sZip = '1-1-1';
}

public function __toString(){
return $this->oName->sFirstName." Live in ".$this->oAddress->sPrefecture."\n";
}
};

$oCustomer = new Customer;
$oCustomer->setData();
print($oCustomer);
?>
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:PHP  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。