设计模式是基于面向对象编程 OOP 的,所以先介绍面向对象的概念。UML 类图是面向对象编程的重要设计工具。(UML统一建模语言,包括很多种图,类图是其中一种) 面向对象两个重要的概念:
- 类
- 对象(实例)
三要素:
- 继承(子类继承父类)
- 继承可将公共方法抽离出来,提高复用,减少冗余。
- 封装(数据的权限和保密)
- public 完全开放、protected 对子类开放、private对自己开放;
- 减少耦合,不该外露的不外露;
- 利于数据、接口的权限管理。
- 多态(统一接口,不同实现)
- 同一个接口,不同表现;
- js应用极少
- 需要结合java等语言的接口、重写、重载等功能
- 保持子类的开放性和灵活性
- 面向接口编程
关系:
泛化:表示继承、
关联:表示引用。
什么是设计
- 按照哪一种思路或者标准来实现功能
- 功能相同,可以有不同设计方案来实现
- 伴随着需求增加,设计的作用才能体现出来
五大设计原则
- S- 单一职责原则
- 一个程序只做好一件事
- 如果功能过于复杂就拆分开,每个部分保持独立
- O- 开放封闭原则
- 对扩展开放,对修改关闭
- 增加需求时,扩展新代码,而非修改已有代码
- 这是软件设计的终极目标
- L- 里氏置换原则
- 子类能覆盖父类
- 父类能出现的地方,子类就能出现
- I- 接口独立原则
- 保持接口的单一独立,避免出现“胖接口”
- 类似于单一职责原则,这里更关注接口
- D- 依赖倒置原则
- 面向接口编程,依赖于抽象而不依赖于具体
- 使用方知关注接口而不关注具体类的实现
设计是设计原则,设计思想
模式是通过概念总结出来的模板
23种设计模式
-
创建型 - 工厂模式(工厂方法模式、抽象工厂模式、建造者模式)、单例模式、原型模式
-
组合型 - 适配器、装饰器、代理、外观、桥接、组合、享元
-
行为型 - 策略、模板方法、观察者、迭代器、职责连、命令、备忘录、状态、访问者、中介者、解释器