设计模式总览
什么是设计模式,设计模式个人理解:设计模式是经过实践证明的面向复杂需求,提供易于扩展,复用程度高的工程化解决方案。另外设计模式不的优点不是面向于设计阶段,或者说不是面向具体的功能编写时的阶段。因为在代码构建阶段会进行大量的抽象,封装设置大量的父子类,与实现类,从类的数量上来看,大幅度的增加的工作量,因此对于简单的固定的一定不可扩展的需求大部分还是不需要设计模式的。
并对于一般人遇到的一般性需求而言,更倾向于理解为简单的固定的一定不可扩展的需求,从而只面向需求进行设计,而不一定采取设计模式。
设计模式既然是经过实践证明的面向复杂需求,提供易于扩展,复用程度高的工程化解决方案。设计模式主要的优点在与什么,在于复用与扩展。正确使用了设计模式的系统,对于未来未知的需要提供极好与风险较小的扩展方式。并且通过对业务的整体分析,从业务层面进行抽象之后,很容易写出复用程度高的代码从而解决类似功能的实现。
设计模式遵从的设计原则有六大设计原则:单一职责、里式替换、依赖倒置、接口隔离、迪米特法则、开闭原则。
设计模式的共计23种,这些模式可以分为三大类:创建型设计模式、行为型模式、结构型模式。分别从类的创建,行为,以及类与类的关系之间进行阐述
设计原则
单一职责
只负责一个职责,只有该职责会引起对象模块的变化
单一职责:实际上是指一个类或者一个最小功能模式只负责一种职责,而不是只有一种具体的功能。因为职责是抽象化的概念,在设计时必须从对整体的业务进行分析拆解合并,在经过系统化的分析后将逐渐分析出原子职责,根据原子职责进行设计。
里氏替换原则
子类对象可以无缝的替换父类对象。
要求所有出现父类的地方可以无缝的替换子类。该要求实际上是设计模式的核心要求,是搭建框架的基准之一。由于子类可以复写父类的方法。基于此原则要求在复写父类方法时,传入的参数类型要父类化,返回值的类型要子类化。或者严格面向接口编程——父类的公有方法全部来自于父类实现的接口
依赖倒置
面向接口(抽象)编程,高层调用抽象,具体实现依赖于具体子类
接口隔离
接口的范围要尽可能的小。
迪米特法则
类的内部只和朋友类交互(朋友的朋友不是朋友)
开闭原则
对扩展开放,对修改关闭(子类的修改不引起高层的变化)
额外说明
高层、高层模块:指定类而言使用该类的结构部分。
底层、底层模块:指定类而言,该类使用的部分。
六大原则对类及其实体的要求
=》对类的要求(单一职责)
=》父子类的要求(里氏替换)
=》抽象与类的要求(依赖倒置)
=》接口的要求(接口隔离)
=》类之间的要求(迪米特法则)
=》类修改的要求(开闭原则)
设计模式研究的关键部分主要有:
类、父子类、接口、参数类、扩展。