僱工模式
僱工模式也叫做僕人模式(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());
}
}