一、委托模式簡介
- (注:)不屬于 23 種設計模式之一潮剪,是面向對象設計模式中常用的一種模式涣楷。
- 特點:持有被委托人的引用,不關心過程鲁纠,只關心結果总棵。
- 歸類:行為型模式
- 核心:可以理解為靜態(tài)代理和策略模式一種特殊的組合。
二改含、與代理模式的區(qū)別
- 代理模式:注重過程
- 委托模式:注重結果
三情龄、與策略模式的區(qū)別
- 注重的外部擴展
- 注重的是內部的靈活和復用
四、實戰(zhàn)演練
demo事例:老板給經理安排了A需求捍壤,經理接了骤视,然后安排給程序員1去開發(fā);
- 開發(fā)需求的接口 DevelopmentNeeds.java
package com.demo.delegate;
/**
* 開發(fā)需求
*/
public interface DevelopmentNeeds {
public void doing(String needsName);
}
- 實現(xiàn)改需求的兩個苦逼的程序員 DevelopmentOne.java
package com.demo.delegate;
/**
* 實現(xiàn)改需求的兩個苦逼的程序員
*/
public class DevelopmentOne implements DevelopmentNeeds{
@Override
public void doing(String needsName) {
System.out.println("我是程序員1號鹃觉,我在苦逼的開發(fā):"+needsName+"需求");
}
}
DevelopmentTwo .java
package com.demo.delegate;
public class DevelopmentTwo implements DevelopmentNeeds{
@Override
public void doing(String needsName) {
System.out.println("我是程序員2號专酗,我在苦逼的開發(fā):"+needsName+"需求");
}
}
- 根據功能安排某個程序員做事情的經理 Director .java
package com.demo.delegate;
import java.util.HashMap;
import java.util.Map;
/**
* 根據功能安排某個程序員做事情的經理
*/
public class Director implements DevelopmentNeeds{
private Map<String,DevelopmentNeeds> needs = new HashMap<String,DevelopmentNeeds>();
public Director() {
needs.put("洗車",new DevelopmentOne());
needs.put("優(yōu)惠券",new DevelopmentTwo());
}
@Override
public void doing(String needsName) {
needs.get(needsName).doing(needsName);
}
}
- DelegateTest.java
package com.demo.delegate;
public class DelegateTest {
public static void main(String[] args) {
new Director().doing("優(yōu)惠券");
}
}
總結
- 功勞是經理的,具體做事的是程序員的