Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2002/04/01

counter hits
since 1999/11/06


PHP4でデザインパターン(Strategy編)

オブジェクト指向についてはまだまだ勉強中ですが、「PHPでGoFのデザインパターンを実装したら、どんな感じになるんだろ?」と思ってしまったので、ちょっとずつやってみることにしました。

caution間違いやご意見がありましたら、遠慮なくツッコミを入れてくださいm(_"_)m

今回は、Strategyパターンで、「アルゴリズムをごっそり入れ替える」パターンです(以下のクラス図を参照)。

Strategyパターンのクラス図

今回のサンプルは、log4j風ログ出力クラスです。この場合、Log4pクラスのgetInstanceメソッドに出力処理の種類を渡し、ConcreteStrategyに相当するオブジェクトを作成しています。また、作成するオブジェクトのPHPファイルのみをinclude_once関数を使って読み込んでいます。

●Log4p.phlの抜粋

<?php
        :
class Log4p extends Object
{
        :
    function &getInstance($mode = LOG_INFO, $type = "html")
    {
        static $singleton_;
        if ($singleton_ == null) {
            $singleton_ = new Log4p();
            $singleton_->init($mode, $type);
        }
        return $singleton_;
    }
        :

    function init($mode, $type)
    {
        :

        /**
         * 具象クラスの読込
         */
        $concrete = "Log" . ucfirst($type) . "Output";
        $inc_file = $concrete . ".phl";
        if (@!include_once(CLASSPATH_LOG4P . $inc_file)) {
            return false;
        }

        if ($mode >= LOG_FATAL) {
            $this->fatal_ = new $concrete("FATAL");
        :
    }

        }
?>

実は、自分自身も気付いてなかっただけです。。。(^-^;



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2002 by Hideyuki SHIMOOKA all rights reserved.