首页 > 代码库 > 装饰设计模式
装饰设计模式
核心思想
装饰模式就是给一个对象动态的增加一些新的功能,
装饰对象和被装饰对象实现同一个接口,
装饰对象持有被装饰对象的实例。
UML图
//定义接口 public interface Sourceable { 2. public void method(); 3.} //被装饰者实现接口 1.public class Source implements Sourceable { 2. 3. @Override 4. public void method() { 5. System.out.println("the original method!"); 6. } 7.} //装饰者实现接口,并持有被装饰者的实例 1.public class Decorator implements Sourceable { 2. 3. private Sourceable source; 4. 5. public Decorator(Sourceable source){ 6. super(); 7. this.source = source; 8. } 9. @Override 10. public void method() { 11. System.out.println("before decorator!"); 12. source.method(); 13. System.out.println("after decorator!"); 14. } 15.} //测试类: 1.public class DecoratorTest { 2. 3. public static void main(String[] args) { 4. Sourceable source = new Source(); 5. Sourceable obj = new Decorator(source); 6. obj.method(); 7. } 8.} 输出: before decorator! the original method! after decorator!
小结
应用场景:
1、需要扩展一个类的功能时使用。
2、动态的为一个对象增加功能,而且还能动态撤销。
(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:
产生过多相似的对象,不易排错!
装饰设计模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。