代理模式 顧名思義 就像某商品生產商 將產品交由 某一銷售公司由他們的銷售渠道代理出售一樣?
此設計模式最主要就是解耦和了 ?角色分配和邏輯拆分 能更好的處理邏輯關系
這個商品生產商 就是被代理類(被代理人) 銷售公司就是代理類(代理人) 銷售團隊就是抽象方法(也就是賣商品)?
所以代理模式 就是由代理人 替 被代理人 完成 某一任務?
代理模式有三部分組成 第一部分 要有一個被代理類 (商品生產商) 一個抽象接口 (賣商品) 一個代理類(銷售公司)
下面我們上代碼 看一下這種關系 代理模式
public class Producers implements SalesInf{?
// 生產商 被代理類
String name;
String function;
Buidler buidler;
public Producers(Buidler buidler) {
? ? this.name = buidler.name;
? ? this.function = buidler.function;
}
public String getName() {
? ? return name;
}
public void setName(String name) {
? ? this.name = name;
}
public String getFunction() {
? ? return function;
}
public void setFunction(String function) {
? ? this.function = function;
}
static class Buidler{
? ? String name;
? ? String function;
? ? public Buidler setName(String name){
? ? ? ? this.name = name;
? ? ? ? return this;
? ? }
? ? public Buidler setFunction(String function){
? ? ? ? this.function = function;
? ? ? ? return this;
? ? }
? ? public Producers build(){
? ? ? ? return new Producers(this);
? ? }
}
@Override
public void salesMothed() {
? ? System.out.print("我是生產商孙咪,商品是我的\n");
} }
public interface SalesInf {?
// 銷售 抽象方法?
void salesMothed();?
}
public class Agent implements SalesInf{?
// 代理類 商品代理人?
private Producers producers;
public Agent(Producers producers) {
? ? this.producers = producers;
}
@Override
public void salesMothed() {
? ? producers.salesMothed();
? ? System.out.print("我是代理人糜工,商品不是我的,但是只有我能賣\n");
}
public class CompanyTest {
public static void main(String[] args) {
? ? Producers.Buidler buidler = new Producers.Buidler();
? ? Producers producers = buidler.setName("三聚氰胺").setFunction("我很好吃").build();
? ? Agent agent = new Agent(producers);
? ? agent.salesMothed();
} }
這是輸出結果 和 執(zhí)行順序
我是生產商池颈,商品是我的 我是代理人秩命,商品不是我的,但是只有我能賣
Process finished with exit code 0