《山炮进城》
大哥,也许你对你现在的处境感到困惑吧,把握机遇 掌控人生 ,今天的失败就是你明天的成功。蓝天计划,会让你一夜暴富,成为第二个马云,第二个李嘉诚。
今天来聊的是设计模式里面的代理模式,不是传销啊,哈哈。
代理模式:
代理模式是软件设计模式中的基本技巧,在这个模式中,有两个对象参与处理同一个请求,接收的请求由代理对象委托给真实对象处理,代理对象控制请求的访问,好处就是使用聚合代替集成,降低软件模块之前的耦合度。
设计到的角色主要有几个
(1)抽象角色:真实对象和代理对象的接口
(2)真实角色:真正处理请求的目标对象
(3)代理角色:代理对象角色内部含有真实对象的引用,从而代理对象可以将请求转为真实对象的处理。同时,代理对象在执行真实对象操作的前后还可以添加附加操作
下面还是以一个简单的小例子来阐述下这个模式:
小王大学毕业后响应国家大众创业万众创新的号召,在老家农村搞起了个土特产品的代理销售,开了淘宝店,做了微商,由于是计算机专业的,脑子灵活,加上服务周到,品质好,客户都喜欢来他店里去购物。不到三年就干成了规模,自己开了个深加工食品厂,发展了几十家代理商,从此宝马美人在握,成为人生大赢家。
具体实现:
public interface IFoodFactory {
public void product();
public void sell();
}
//工厂
public class FoodFactory implements IFoodFactory{
public void product() {
// TODO Auto-generated method stub
System.out.println("土特产品生产加工");
}
public void sell() {
// TODO Auto-generated method stub
System.out.println("土特产品销售");
}
}
//代理商。跟厂家实现一样的接口,这也是关键
public class FoodProxy implements IFoodFactory{
private final IFoodFactory foodfactory;
private final boolean pefmit=true;
public FoodProxy(IFoodFactory foodfactory){
this.foodfactory=foodfactory;
}
public void product() {
// TODO Auto-generated method stub
if(this.pefmit)
{
System.out.println("正规授权加盟代理商");
System.out.println("正规授权加盟代理商接到订单,要求工程生产");
this.foodfactory.product();
}else
{
System.out.println("假的代理商,卖假货的");
}
}
public void sell() {
if(this.pefmit)
{
System.out.println("正规授权加盟代理商");
System.out.println("正规授权加盟代理商拿到货了,开始销售了");
this.foodfactory.sell();
}else
{
System.out.println("假的代理商,卖假货的");
}
}
}
//消费者
public class Customer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//没有代理商,我们直接从厂家买
System.out.println("没有代理商,我们至于从厂家买===============");
IFoodFactory foodfactory=new FoodFactory();
foodfactory.product();
foodfactory.sell();
System.out.println("有了代理商之后=====================");
IFoodFactory proxy=new FoodProxy(foodfactory);
proxy.product();
proxy.sell();
}
}
结果: