架构师训练营 - 总结 3
1.什么是设计模式
<1>每一种设计模式都描述了一些重复出现问题的解决方案
<2>设计模式本身是一种可重复使用的解决方案。
2.设计模式的作用
根据OOD的目标(设计低耦合,高内聚的程序),体现了设计原则(OCP,LSP,DIP,SRP,ISP),被大量用来设计实现软件系统的框架,使框架能够对应用业务代码进行契约式约束,增加代码可重用性和可维护性,让代码更容易被他人理解、保证代码可靠性,使代码编写真正工程化。
3.设计模式的构成
<1>模式名称
<2>待解决的重复出现的问题和场景
<3>解决方案-描述了组成设计的类和对象的关系,职责以及合作
<4>结论-运用该方案的利弊,主要是对系统弹性,可扩展性和可移植性的影响
4.设计模式的分类
根据其目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种:
• 创建型模式主要用于创建对象。
• 结构型模式主要用于处理类或对象的组合。
• 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。
创建型模式:
抽象工厂模式(Abstract Factory)
建造者模式(Builder)
工厂方法模式(Factory Method)
原型模式(Prototype)
单例模式(Singleton)
结构型模式:
适配器模式(Adapter)
桥接模式(Bridge)
组合模式(Composite)
装饰模式(Decorator)
外观模式(Facade)
享元模式(Flyweight)
代理模式(Proxy)
行为型模式:
职责链模式(Chain of Responsibility)
命令模式(Command)
解释器模式(Interpreter)
迭代器模式(Iterator)
中介者模式(Mediator)
备忘录模式(Memento)
观察者模式(Observer)
状态模式(State)
策略模式(Strategy)
模板方法模式(Template Method)
访问者模式(Visitor)
5.课堂示例-Junit框架用到的设计模式
<1>JUnit在TestCase中应用了模板方法模式:
<2>JUnit在TestCase类中应用了适配器模式
在runBare()方法中,通过runTest()方法将我们自己编写的testXXX()方法进行了适配,使得JUnit可以执行我们自己编写的TestCase,runTest方法实现如下:
<3>观察者模式
<4>命令模式
经过使用命令模式后的给系统的架构效果:
命令模式将实现请求的一方(TestCase开发)和调用一方(JUnit)进行解耦.
命令模式使新的TestCase很容易加入,无需改变已有的类,只需继承TestCase类即可.
命令模式可以将多个TestCase进行组合成一个复合命令产,TestSuite就是它的一个复合命令,当然它使用了组合模式.
命令模式容易反请求的TestCase组合成请求队列,这样使接收请求的一方(JUnit Framwork),容易决定是否执行请求,一旦发现测试用命失败或者错误可以立该停止进行报告.
<5>策略模式
•Junit Plugin 实现Eclipse plugin接口。
•单元测试类继承TestCase类实现Test接口
<6>组合模式
TestCase(叶子),TestUnite(容器),Test接口(抽象)的底层设计就是典型的组合模式
评论