第七次作业
设计模式总结
通过本次寒假小组在老师的指导下对设计模式进行了一次简单的学习,我们了解到设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。在这个假期的过程中我们对设计模式有了初步基础性的了解,估计也没有掌握五分之一的内容,但还是有所收获,去学校之后还要继续努力,不懂的可以去问老师,争取更上一层楼。下面是我们小组结合本假期的学习内容和在网上查找的相关资料进行汇总。
软件设计原则:
单一职责原则:一个类或者一个方法只负责一项职责,尽量做到只有一个原因引起变化。
里氏替换原则:子类在可以有自己的个性前提下必须完全实现父类的方法,覆盖或者实现父类方法时输入参数可以被放大,输出结果可以被缩小。
依赖倒置原则:高层模块不应该依赖低层模块,两个都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
接口隔离原则:建立单一的接口,尽量细化接口提高程序设计灵活性,接口中的方法尽量少。提高内聚,减少对外交互。
迪米特法则:应该尽量减少对象之间的交互,通过引入一个合理的第三者来降低现有对象之间的耦合度。
开闭原则:开放封闭有两个含义,一个是对于拓展是开放的,另一个是对于修改是封闭的。在代码层面而言就是在你有新的需求的时候,你应当增加新的对象来实现,而不是修改原来的对象。
设计模式:
策略模式(Strategy) 把可以替换的算法步骤封装成一个个算法族,供运行时动态选择
观察者模式(Observer) 定义并维护对象之间的一对多关系
装饰者模式(Decorator) 建立拥有共同超类的装饰者与被装饰者来实现功能的动态扩展
工厂模式(Factory) 封装对象的创建过程,包括工厂方法模式和抽象工厂模式
单例模式(Singleton) 用来创建唯一的对象(比如数据库连接对象,线程池对象等等)
命令模式(Command) 封装方法调用细节,解耦请求者与执行者
适配器模式(Adapter) 用来实现不同接口间的转换
外观模式(Facade) 为复杂的子系统提供简单易用的高层接口
模版方法模式(Template Method) 用来封装算法骨架(流程),某些步骤由子类实现
迭代器模式(Iterator) 用来封装遍历细节
组合模式(Composite) 提供一种层级结构,使得我们能够忽略对象与对象集合间的差异,一视同仁地对待它们
状态模式(State) 把所有动作都封装在状态对象中,状态持有者将行为委托给当前状态对象
代理模式(Proxy) 通过插入第三方(代理对象)来分离调用者和被调用者(不同于执行者)
复合模式(Compound) 将多个模式组合结合起来形成一个“框架”,以解决一般性问题
桥接模式(Bridge) 将抽象的控制类与具体实现类通过组合解耦,使得抽象层类与实现层类可以对立与对方而变化
生成器模式(Builder) 用来封装组合结构(树形结构)的构造过程,与迭代器模式类似,都隐藏了组合结构的内部实现,只提供一组用于创建组合结构的接口
责任链模式(Chain of Responsibility) 让一个请求可以被一组接收者顺序处理,类似于Android处理请求的方式:一个接收者捕获请求后可以return true消费掉请求,也可以return false传递给接收者队列中的下一个接收者(观察者)
蝇量模式(Flyweight) 抽象出对象管理层来统一管理大量的同类型对象,以减少运行时对象实例的个数,减少内存消耗
解释器模式(Interpreter) 用来为简单语言创建解释器,将语法规则直接映射为各个类,结构简单,但效率较低
中介者模式(Mediator) 引入中介者来封装多个对象间的复杂交互,以降低同级(在类结构统一层次上的)对象间的依赖
备忘录模式(Memento) 支持对象状态的保存与恢复,并将对象状态数据封装起来,独立于客户代码以提供保护(Java中可以结合序列化反序列化技术来实现该模式)
原型模式(Prototype) 以现有的对象为原型,通过clone得到新的对象(以简化新对象的创建过程)
访问者模式(Visitor) 为组合结构添加新的操作,而不需要频繁的改变组合结构

浙公网安备 33010602011771号