1. 程式人生 > >Java設計模式之委派模式

Java設計模式之委派模式

委派模式有點像代理模式又有點像策略模式。例如:公司老闆給專案經理下達任務,將任務全權交給專案經理,由專案經理根據一定的策略將任務分配給小組成員,專案經理從頭跟到尾。專案經理就像一個受老闆授權的中介,老闆不需要和小組成員直接聯絡,甚至可以不知道他的存在。
我們員工實現同一個幹活的介面

public interface ITarget {
    public void doSomething(String command);
}

員工A和員工B(真正做事的人)做自己擅長的工作

public class TargetA implements ITarget {
    @Override
public void doSomething(String command) { System.out.println("我是員工A,現在開始幹" + command + ""); } } public class TargetB implements ITarget { @Override public void doSomething(String command) { System.out.println("我是員工B,現在開始幹" + command + ""); } }

專案經理持有所有的小組成員,根據一定的策略選擇幹活的人

public class Leader implements ITarget {

    private Map<String, ITarget> targets = new HashMap<>();

    /**
     * 專案經理持有小組成員可供選擇,類似策略模式
     */
    public Leader() {
        targets.put("加密", new TargetA());
        targets.put("登入", new TargetB());
    }

    public void doSomething
(String command) { targets.get(command).doSomething(command); } }

領導下達命令

public class Boss {

    public static void main(String[] args) {
        new Leader().doSomething("登入");
    }
}

從上面可以看出來委派模式就是靜態代理和策略模式的一種特殊組合,代理模式注重的是過程,委派模式注重的是結果。策略模式注重的是可擴充套件(外部擴充套件),委派模式注重的是內部的靈活和複用。