2010年3月4日 星期四

Design Pattern : 02 Adapter


當在開發Class時,在功能上可以利用舊的Class功能
這時候這個新的Class,就可以用Adapter方式去包裝
也就是說
在Adapter內定義新的method,但method內實際是在執行舊Class的method
使用者只知道他呼叫的是Adapter的method,不需知道其內部是如何運作
Adapter的做法,分別可以用繼承或委讓方式來實做
參與者
1.Old Class
原有已經開發好的Class
譬如 原本已有一個print() method
2.Adapter1
使用繼承方式來包裝Old Clas所產生新的Class


class Adapter1 extend Old{
    function Adapter1(){}
    function show(){print()}
}

3.Adapter2
在Class內包含了一個Old Class的instnace,用委讓的方式
來執行真正要做的事


class Adapter2{
    var old:Old
    function Adapter2(){
        old=new Old();
    }
    function show(){
        old.print()
    }
}

4.Main
主要應用程式


//var adapter:Adapter1=new Adapter1('hello');
var adapter:Adapter2=new Adapter2('hello');
adapter.show();

沒有留言: