关于模式与重构

醉酒当歌 提交于 2020-08-13 11:15:28

单例模式:

 

组合模式:

UML:

 

总结:

  1. 单元测试:JUnit集成,必须继承TestCase,实现setUp,tearDown方法,自己的单元测试方式命名用testXyz(),Junit会自动执行这些单元测试
  2. 模板方法模式:在基类中约定方法执行过程,在子类中实现各个步骤方法的具体实现,步骤方法形式上可以是抽象方法,具体的方法,钩子方法
  3. 策略模式: 定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换
  4. 组合模式(Composite):将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致.
                  主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。
                  优点: 1、高层模块调用简单。 2、节点自由增加。
                  缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。
                  使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理。
  1. 装饰器模式:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
                  主要解决:为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。
                  优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
                  缺点:多层装饰比较复杂。
                  使用场景: 1、扩展一个类的功能。 2、动态增加功能,动态撤销。
                  应用:HttpServletRequest/HttpServletRequestWrapper,Collections.synchronizedList(list),inputStream、OutputStream等
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!