かつ丼はおやつに入りますか?

コンピュータの話とか食べ物の話とか旅行とかいろいろ

ColdFusionで依存性逆転の原則

概要

ColdFusionで依存性逆転の原則を書いてみる。

ファイル構造

main.cfm
SampleLogic.cfc
SampleModel.cfc
ISampleModel.cfc

依存関係は具象から抽象へ。SampleLogic(具象)はインターフェース(抽象)に依存していてSampleModel.cfc(具象)へは直接依存していない。 SampleLogicへコンストラクタインジェクションでSampleModelオブジェクトを注入。
これならSampleModelをモックに差し替えることでSampleLogic単体でテストできる。

main.cfm

<cfscript>
    function main(){
        var model = new SampleModel();
        var logic = new SampleLogic(model);
        var result = logic.test_logic();
        writeDump(result);    // hoge
    }

    main();
</cfscript>

ISampleModel.cfc

interface{
    string function test_func();
}

SampleModel.cfc

component implements="ISampleModel"{
    public string function test_func(){
        return "hoge";
    }
}

SampleLogic.cfc

component{
    property ISampleModel model;

    /**
     * constructor
     */
    public function init(model_instance){
        this.model = model_instance;
    }

    public function test_logic(){
        return this.model.test_func();
    }
}