代理器
java学习-设计模式-装饰器模式和代理模式的区别
区别:
**装饰器模式: ** 关注于在一个对象上动态的添加方法。当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。
**代理模式: ** 关注于控制对对象的访问。用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。
**装饰模式: ** 注重对对象功能的扩展,
它不关心外界如何调用,只注重对对象功能的加强,装饰后还是对象本身。
**代理模式: ** 注重对对象某一功能的流程把控和辅助。它可以控制对象做某些事,偏重因自己无法完成或自己无需关心,需要他人干涉事件流程,更多的是对对象的控制
重心是为了借用对象的功能完成某一流程,而非对象功能如何。
**装饰模式: ** 对被装饰的对象增加额外的职责,满足里氏代换原则(子类可以代替父类)
如:画画,你可以画圆形、画正方形等等,还可以画红色的、画绿色的等等,但是你都是在画画,你想怎么画你就怎么装饰。
**代理模式: ** 对被代理的对象提供访问控制。
如:老师叫你去画一个图形,你这边根据判断调用代理类,去画一个红色的圆形,下一次老师叫你再去画,根据老师的要求你画了一个绿色的正方形。你必须按照要求实现代理的功能。
**举个例子: ** A类是原始功能的类, B是装饰模式中对A类的扩展之后的类, C是代理模式中对A类的扩展
对于用户调用来说:
使用装饰模式, 用户更关系的是B的功能(包含A的原始功能)。
使用代理模式,用户更关心A的功能。并不关系(c的功能)。
**所以:
对于代理类,如何调用对象的某一功能是思考重点,而不需要兼顾对象的所有功能; 对于装饰类,如何扩展对象的某一功能是思考重点,同时也需要兼顾对象的其它功能,因为再怎么装饰,本质也是对象本身,要担负起对象应有的职责。
使用代理模式,代理和真实对象之间的的关系通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造。 **
// 装饰器模式需要指定你要装饰的类,可以叠加装饰
package Practices.Mode.Decorator_Pattern;
// 3. 创建一个装饰类去实现进多种货(逻辑在理解中)
public class Purchase1 implements Fruit_Shop {
private Fruit_Shop fruitShop;
// 这里在初始化的时候需要指定你要装饰的类
public Purchase1(Fruit_Shop fruitShop) {
this.fruitShop = fruitShop;
}
// 选择你想装饰的样子装饰,可以嵌套装饰,用户还是要知道原来的样子,慢慢装饰出想要的样子
public void Purchase() {
fruitShop.Purchase();
System.out.println("进苹果");
}
}
// 来源于装饰模式练习
// 代理模式在编译的时候就已经确定了要代理的类,不用指定
package Practices.Mode.Proxy_Pattern;
import java.util.Random;
// 3. 创建一个代理类,根据外卖派送员的状态来决定送不送这份外卖
public class Send_Food_people {
private foods food;
// 代理类在初始化的时候就已经指定了
public Send_Food_people() {
this.food = new food1("鱼香茄子");
}
// 代理类主要是根据当前情况实现代理功能,对于用户而言,只要知道代理类就好了
public void getfood(){
Status enums[] = Status.values();
Random random = new Random();
Status ed = enums[random.nextint(enums.length)];
if(ed==Status.busy){
System.out.println("业务繁忙,暂不接单");
}else{
food.shopping_foods();
}
}
}
// 使用枚举定义外卖派送员的状态
enum Status{
busy,
idle;
}
相关阅读
微店号称“精而简,小而美”是众多电商企业的新宠儿,出现在消费者眼中最多的就是微信小店、拍拍小店、京东微店,今天小编给大家说说三
原文地址:http://blog.csdn.net/zz709196484/article/details/54770017 注:exit()就是退出,传入的参数是程序退出时的状态码,0表示
看图就明白了, 以qq为例:再来看看:
京东商城和天猫平台一样,是国内首屈一指的电商平台,天猫有各种天猫旗舰店,也有天猫超市,同样,京东商城也有京东旗舰店和自营店。我们今
GitHub提供两种clone方式 Clone with HTTPS: git clone https://github.com/xxx/xxx.git Clone with SSH: git clone git@