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(); } }