Design Patterns
# 六大基本原则
# 1. 单一职责原则
全称:Single Responsibility Principle
缩写:SRP
定义:一个类应该有且只有一个变化的原因(There should never be more than one reason for a class to change.)
定义解读:《UNIX编程艺术》中提到的一句话和这篇文章很贴切:Do one thing,and do it well。通俗的说,即一个类只负责一项职责
# 2. 开闭原则
全称:Open Close Principle
缩写:OCP
定义:一个软件实体(如类、模块、函数)应当对扩展开放,对修改关闭。
定义解读:
# 3. 里氏替换原则
全称:Liskov Substitution principle
缩写:LSP
定义:任何一个基类可以出现地方,子类一定可以出现,并且不会产生任何错误(注意:必须是父子关系)
定义解读:第一个注意:里氏替换原则核心就是抽象(继承和接口)每一个子类都会拥有父类的方法属性
第二个注意:开闭原则和里氏替换原则生死相依,通过里氏替换原则达到了对外开放,对修改关闭
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
# 4. 依赖导致原则
全称:Dependence Inversion Principle
缩写:DIP
定义:高层次模块不依赖于低层次模块实现细节
定义解读:说白了,依赖于抽象,不依赖具体实现指导子类实现功能细节,依赖倒置原则的核心就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。
# 5. 接口隔离原则
全称:Interface Segregation Principle
缩写:ISP
定义:类与类之间的依赖关系应该是建立在最小的接口上
# 6. 迪米特原则--最少知识原则
全称:Least Knowledge Principle
缩写:LKP
定义:一个对象应该对其他的对象有最少的了解
# 设计原则总结
六大基本原则都是基于抽象(抽象类和接口)
# 设计模式(设计模式是一种设计思想,为了可扩展性和健壮性本质是解耦)
- 单例模式
- 工厂模式
- 观察者模式
- 原型模式
- 代理模式
- 策略模式
- 模板模式
# 架构师的目的是为了什么
- 针对开发者
- 针对公司
- 针对客户
其实架构师就是编程思想
架构师每天都在思考什么
- 应该如何让我的系统更快
- 如何避免系统出现瓶颈
宏观思维,四个架构图解决三个属性
四个架构图
- 业务架构图
阐述整体业务在一定抽象层次的高度模块化 - 技术架构图
用什么样的中间件体系来实现可扩展性、可伸缩性、安全性 - 数据架构图
用什么样的存储体系来支撑预判的一个数据规模、数据增长速度 - 部署架构图
使用多少台服务器、多少颗cpu以及多少个cpu内核数,还有sas、sata、ssd的一个有效配比来形成一套有机的硬件体系来保证系统的高可用性
- 业务架构图
属性
- 可扩展性
- 可伸缩性
- 安全性