Decorator-装饰者模式

概述:

装饰边框与被装饰物的一致性,增加被装饰物的功能

Decorator_sample


说明:

1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系删除!
转载请标注出处!


案例:

  • 案例说明:

    给蚊子添加装饰边框 (‘-‘,’+’,’|’等组成的边框)

  • Decorator_uml_case
  • 主要代码:
  • Main.java
    package Gof.Decorator;
    
    public class Main {
        public static void main(String[] args) {
            Display b1 = new StringDisplay("Hello, world.");
            Display b2 = new SideBorder(b1, '#');
            Display b3 = new FullBorder(b2);
            b1.show();
            b2.show();
            b3.show();
            Display b4 = 
                        new SideBorder(
                            new FullBorder(
                                new FullBorder(
                                    new SideBorder(
                                        new FullBorder(
                                            new StringDisplay("你好,世界。")
                                        ),
                                        '*'
                                    )
                                )
                            ),
                            '/'
                        );
            b4.show();
        }
    }
    
    
  • 代码链接:传送门

    uml综述Decorator_uml

  • Component: 定义装饰前蛋糕的接口
  • ConcreteComponent: 实现Component接口的具体蛋糕
  • Decorator:内涵Component,Decorator角色知道自己要装饰的对象
  • ConcreteDecorator: 实际装饰类

收获:

  • 通过继承,装饰边框与被装饰物具有了相同的方法,从接口的角度而言,装饰物与被装饰物具有相同的方法就意味着他们具有一致性
  • 接口的透明性,Decorator可以实现composite的递归形式
  • Decorator 使用委托(弱关联)
  • Decorator缺点是会导致生成许多功能相似的很小的类
  • 继承–父类与子类的一致性
  • 委托–自己和被委托对象的一致性

相关设计模式:

  • Adapter: 适配两个不同的接口
  • Strategy: 整体地替换算法来改变类的功能

注意:

此部分内容属于对GOF Design Pattern知识的初步认知阶段,参考书籍是结城浩的《图解设计模式》,简单易懂,十分推荐!
以上内容,作者一字一句码出来的,纯属不易,欢迎大家转载,转载是还请您表明出处。另外如果我有侵权行为,请在下方留言,确认后我会及时撤销相应内容,谢谢大家!

PS:欢迎大家来到我的小站,鸣谢!