七大设计原则
- 单一职责
- 开闭
- 里氏代换
- 依赖倒转
- 接口隔离
- 合成复用
- 迪比特法则
作业一、
4个原因——找案例分析:
- 过于僵硬
- 过于脆弱
- 复用率低
- 黏度过高
作业二、面向对象的用单一职责?
作业三、开闭原则的书店那题
好的软件
- 可扩展性
- 灵活性
- 可插入性
单一职责
- 一个类的职责越多,可复用性能越低
- 一个对象只包含单一的职责,而且该职责被完整的封装在类里面
开闭原则
- 对可变性封装原则
- 对扩展是开放的,对修改是关闭的
- 使用委托?的方式来做
里氏代换原则
- 所有引用基类的地方必须能透明的使用其子类
- 举例中main使用cryptoA,而cryotoB继承自cryptoA
依赖倒转
- 高层不能依赖低层,都依赖抽象,抽象不依赖细节,细节依赖抽象
- 针对接口编程,不依赖实现编程
- 在代码中使用抽象类,将具体类放入配置文件
- 类之间低耦合,以抽象方式耦合
- 控制反转和依赖注入
接口隔离
- 客户端不应该依赖那些它不需要的接口
- 一个接口太大就需要把它分解,每一个接口承担独立的角色
- 接口仅仅提供客户端需要的行为
- 满足单一职责
合成复用
- 尽量使用对象组合,而不是继承来达到复用的目的
- 组合优于继承
- 通过委派来复用类中的操作
- 组合和聚合是黑箱操作,继承是白箱操作
迪米特法则
- 最少知识原则
- 每个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的单位
- 最小权限原则
- 对朋友对象开放
- 非朋友类如果访问需要调用第三个类
5月6日
作业一:XML设计思想应用实例
5月8日(我的作业)
作业:设计原则在Java中的实现方法(比如加密类)
先讲是什么问题
解决方案
类图
代码实例
不做太多
作业二(Linux用户权限等级实现)(周哥的问题)