狠狠撸

狠狠撸Share a Scribd company logo
面向对象设计的七大原则
商城研发部 – 徐宁
目标
? 高内聚
? 低耦合
? 可复用
? 可维护
面向对象设计的七大原则
? 开闭原则
? 单一职责原则
? 里氏替换原则
? 迪米特法则
? 依赖注入原则
? 接口分离原则
? 合成/聚合原则
原则一 开闭原则
?定义
?对扩展开放
?对修改关闭
?不变的部分加以抽象应对扩展(接口、抽象类)
?接口最小功能设计原则
?不足的部分可以通过定义新的接口来实现
?模块之间的调用通过抽象接口进行
?开闭原则具有理想主义色彩
?其他几条原则,则可以看做是开闭原则的实现。
面向对象设计原则
原则二 单一职责原则
?定义
?一个类只有一个引起它变化的原因
?描述
?把类拆分成最小的职能单位
?目的
?高内聚 低耦合 可复用 可组合
?注意
?职责划分无量化标准
原则三 里氏替换法则
?定义
?子类可以扩展父类的功能(扩展开放)
?不能改变父类原有的功能(修改关闭)
?描述
?子类实现可以实现父类的抽象方法,但尽量不重写非抽
象方法
?覆盖或实现父类的方法时输入参数可以被放大
?覆盖或实现父类的方法时输出结果可以被缩小
?注意
?以父类定义的对象无法调用只存在于子类中的方法
?父类尽量设计为抽象类或接口
原则三 里氏替换原则
? 输入参数可以被放大
原则三 里氏替换原则
? 输出结果可以被缩小
原则四 迪米特原则
?定义
?又叫最少知道原则,为了降低系统间调用的耦合度,可
以适量增加中介者类
?描述
?逻辑封装在内部
?只提供的public方法,不泄露任何信息
?模块之间通过接口通信
?降低成员的访问权限
?目的
?降低依赖 低耦合
?注意
?大量传递调用的小方法会造成困扰并降低效率
原则五 依赖注入原则
?定义
?要依赖于抽象,不要依赖于具体的实现
?面向接口编程
?描述
?低层模块尽量都要有抽象类或接口
?变量的声明类型尽量是抽象类或接口
?使用继承时遵循里氏替换原则
?方法
?通过构造函数传递依赖对象
?通过setter方法传递依赖对象
?接口声明实现依赖对象,也叫接口注入
原则六 接口分离原则
?定义
?客户端不应该依赖它不需要的接口
?一个类对另一个类的依赖应该建立在最小的接口上
?描述
?低层模块尽量都要有抽象类或接口
?变量的声明类型尽量是抽象类或接口
?使用继承时遵循里氏替换原则
?方法
?将臃肿的接口拆分为独立的几个接口
?注意
?要适度,不要过大,但也别太小
原则六 接口分离原则
?不好的接口
原则六 接口分离原则
?好的接口
原则七 合成/聚合原则
?定义
?尽量使用对象组合,而不使用继承来达到复用的目的
?扩展的时候用继承,复用的时候用关联
?描述
?继承复用的缺点
? 破坏封装性。不管想用的不想用的方法全部都继承了。无法
实现选择性继承。
? 如果想要更换父类,必须修改源代码,违背了开闭原则。
?组合聚合是引用其他的类的方法
?注意
?就是系统中会有较多的对象需要管理
面向对象设计的七大原则
? 总结
? 原则在设计模式中体现

More Related Content

面向对象设计原则