十二、Decorator 装饰器模式
2024-08-25 14:06:59
装饰器 Decorator
允许向一个现有的对象添加新的功能,同时又不改变其结构。这种设计类型属于结构性模式,它是作为现有类的一个包装
这种设计模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整的前提下,提供额外的功能。
意图:动态滴给一个对象添加一些额外的职责,就增加功能来说,装饰器相比于生成子类,更加灵活
何使使用装饰器: 在不想增加子类的情况下,扩展类
优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点:多层装饰比较复杂。
使用场景: 1、扩展一个类的功能。 2、动态增加功能,动态撤销。
//基础接口
public interface Component { public void biu();
}
//具体实现类
public class ConcretComponent implements Component { public void biu() { System.out.println("biubiubiu");
}
}
//装饰类
public class Decorator implements Component { public Component component; public Decorator(Component component) { this.component = component;
} public void biu() { this.component.biu();
}
}
//具体装饰类
public class ConcreteDecorator extends Decorator { public ConcreteDecorator(Component component) { super(component);
} public void biu() { System.out.println("ready?go!");
this.component.biu();
}
}
//使用装饰器
Component component = new ConcreteDecorator(new ConcretComponent());
component.biu(); //console:
ready?go!
biubiubiu
最新文章
- JS获取当前时间
- java类加载相关
- 跟小静读《jQuery权威指南》——目录
- Hibernate之二级缓存
- 一个ORM的实现(附源代码)
- C# Gabbage Collecting System
- CF 115B Lawnmower(贪心)
- Python之路 day2 购物车小程序1
- java.lang.NullPointerException&;com.cb.action.LoginAction.execute(LoginAction.java:48)
- JavaScript动态操作style
- createElement、createTextNode、setAttribute使用方法
- 第22篇 js中的this指针的用法
- ASP.NET没有魔法——为什么使用ASP.NET
- C#之Redis为所欲为
- STM32学习笔记:【001】时钟树与RCC
- Hibernate 再接触 总结
- 驱动笔记 - platform中断程序
- GO语言的进阶之路-网络编程之socket
- autodesk fbx sdk sample里面的工程无法调试解决方法
- protocol method: #method<;channel.close>;(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 2, class-id=60, method-id=80)