設計模式——僱工模式

僱工模式

僱工模式也叫做僕人模式(Servant Design Pattern):行爲模式的一種,它爲一組類提供通用的功能,而不需要類實現這些功能,它是命令模式的一種擴展或者說是命令模式的一種簡化

類圖中:

  • IServiced接口定義了“一組類”所具有的功能。
  • Serviced1和Serviced2是兩個具體的功能。
  • Servant是一個僱工,負責執行上面連個功能。
public interface IServiced { 
    //具有的特質或功能 
    public void serviced(); 
}
public class Serviced1 implements IServiced { 
    public void serviced(){ 
    }
}

public class Serviced2 implements IServiced { 
    public void serviced(){ 
    } 
}
public class Servant { 
    //服務內容 
    public void service(IServiced serviceFuture) { 
        serviceFuture.serviced(); 
    } 
}

僱工模式的實例

我是一個土豪,突然一夜暴富,於是有錢的我僱了三個傭人——廚師、園丁、裁縫,他們都具有相同的功能:清潔。

於是,我們定義一個包含被清潔功能的接口:

public interface Cleanable { 
    //被清潔 
    public void celaned(); 
}

然後,定義被清潔者,有廚房,花園和衣服:

//花園 
class Garden implements Cleanable{ 
    public void celaned(){ 
        System.out.println(“花園被清潔乾淨”); 
    } 
}

//廚房 
class Kitchen implements Cleanable{ 
    public void celaned(){ 
        System.out.println(“廚房被清潔乾淨”); 
    } 
}

//衣服 
class Cloth implements Cleanable{ 
    public void celaned(){ 
        System.out.println(“衣服被清潔乾淨”); 
    } 
} 

定義一個清潔者,可以是三個傭人之一,來調用這些功能:

public class Cleaner { 
    //清潔 
    public void clean(Cleanable clean){ 
        clean.celaned(); 
    } 
}
public class Client { 
    public static void main(String[] args) { 
        //廚師清潔廚房 
        Cleaner cookie = new Cleaner(); 
        cookie.clean(new Kitchen()); 
        //園丁清潔花園 
        Cleaner gardener = new Cleaner(); 
        gardener.clean(new Garden()); 
        //裁縫清潔衣服 
        Cleaner tailer = new Cleaner(); 
        tailer.clean(new Cloth()); 
    } 
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章