新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
站在用户的角度思考问题,与客户深入沟通,找到龙游网站设计与龙游网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站制作、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟空间、企业邮箱。业务覆盖龙游地区。
代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;
装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能
二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你程序的理解,你在一个地方写装饰,大家就知道这是在增加功能,你写代理,大家就知道是在限制。
1、这样理解是对的。
2、其实装饰模式中,可以继承也可以不继承相同的接口或类,只是一般的实现是要继承公共的接口,再实现的时候会更方便些。
3、装饰类,对实体类只做封装不做类的方法的改变,只是一层一层的追加数据,这是一个基本原则。
4、具体详细的话,可以看下“大话设计模式”,会有更深的理解。
试下看吧。
java装饰模式和继承的区别如下:
装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。
一般装饰模式是不用set的都是构造函数传入你要装饰的对象,最好的例子就是jdk 关于io 操作的Stream 和Writer 这些都是很好的装饰例子,自己去看看
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
举例:
public class Test {
// 将内容写到另一个文件
public void write() {
String string = "测试包装模式";
try {
FileWriter fw = new FileWriter("D:/copyfile.txt");
// 用到包装模式,扩展FileWriter的功能
BufferedWriter bW = new BufferedWriter(fw);
bW.write(string);
bW.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Test test = new Test();
test.write();
}
}
执行结果: