1.1单一职责原则
案例1:将不区分类属性与行为的类,如IUserInfo接口拆分为BO,BIZ两个接口。需要使用BO,就将接口对象转换为具体的接口。
定义:单一职责原则(SRP,Single Responsibility Principe)的定义是:应该有且仅有一个原因引起类的变更。
案例2:电话拨号类的划分
单一职责原则的优势:类的复杂性降低了,可读性增加,可维护性提高,变更引起的风险降低
注意 单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。
案例3:高粒度的“修改用户信息方法”!
与现实的妥协:
1.2里氏替换原则
OO中继承的优点:代码共享,减少了创建类的工作量;提高了代码的重用性;子类与父类有相似也有不同;提高了代码的可扩展性,比如版本升级产生的向下兼容;提高了产品与项目的开放性;
OO中继承的缺点:继承是侵入性的,只要继承必须拥有父类的属性与方法;继承也是子类的约束,降低了代码的灵活性;继承增加了父类子类的耦合性,当父类修改变量或方法时,要考虑子类的修改
里氏替换原则的定义:所有引用基类的地方必须能透明地使用其子类的对象
定义包含的四层规范:
第一,子类必须完全实现父类的方法
第二,子类出现的地方并不一定可以被父类替换。
第三,子类方法可以放大参数范围
第四,子类方法可以缩小返回值范围
里氏替换原则的优点:增加程序的健壮性,版本升级时仍有很好的兼容性;即使增加了子类,原有类也可以继续运行;在实际项目中,每个子类对应不同的业务含义,使用父类作为参数,传递不同的子类完成不同的业务逻辑