天天看点

java装饰者模式应用场景

java装饰模式和继承的区别
java装饰模式和继承的区别如下:
装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。
什么是java装饰设计模式
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
publicclassTest{
//将内容写到另一个文件
publicvoidwrite(){
Stringstring="测试包装模式";
FileWriterfw=newFileWriter("D:/copyfile.txt");
//用到包装模式,扩展FileWriter的功能
BufferedWriterbW=newBufferedWriter(fw);
bW.write(string);
bW.flush();
}catch(IOExceptione){
e.printStackTrace();
publicstaticvoidmain(String[]args){
Testtest=newTest();
test.write();
执行结果:
本回答由网友推荐
java设计模式之观察者模式是怎样的?
* subject 
*目标接口 
public interface Subject { 
public void addObserver(Observer o); 
public void deletObserver(Observer o); 
public void notice(); 
//Observer。
Java设计模式的中介者模式是怎样的?
  如果对象之间的关系原本一目了然,中介对象的加入便是“画蛇添足”。 
来看下中介者模式的组成部分吧。 
1) 抽象中介者(Mediator)角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信。 
2) 具体中介者(Concrete Mediator)角色:具体中介者角色通过协调各同事角色实现协作行为。
java设计模式--装饰模式传参求解
一般装饰模式是不用set的都是构造函数传入你要装饰的对象,最好的例子就是jdk 关于io 操作的Stream 和Writer 这些都是很好的装饰例子,自己去看看a=new B();然后a.setneww(a);这个set要求放的是A
Java的装饰模式中装饰角色已经可以扩展其它的功能,为什么还要设置一个具体装饰角色?
是可以合并的,但是不建议这样做,因为扩展需可能要多个具体装饰器角色,那么装饰器角色 就可以操作多个了,简单的说如果你1对1的情况,全部合并都没关系,但是需要应对1对多的情况告诉你个情景吧,java io
抽象构建角色:inputstream ,具体构建角色:FileInputStream,ByteArrayInputStream,
装饰角色:FilterInputStream,具体装饰角色:DataInputStream,BufferedInputstream,pushBackInputStream