本文转载:http://blog.csdn.net/u013736932/article/details/53451615
请支持原创,访问原创链接查看,谢谢。本博客只起一个记录的作用。
1.单一职责原则
单一职责原则的定义是类的变更的原因应该只有一个,它提出用“职责”和“变化原因”来衡量接口或类设计得是否优良,但是这两个因素都是因项目而异因环境而异的,并没有一个量化的标准
单一职责原则使类的复杂性降低,实现什么职责都有清晰的定义,复杂性降低后可读性也就提高了,可读性提高也就更容易进行维护了。如果接口的单一职责做的好,一个接口修改只对相应的实现类有影响,对系统的扩展性和可维护性也有很大提高
除了类与接口之外,方法也同样需要使用单一职责原则,避免方法颗粒度太粗
类尽量做到单一原则,接口一定要做到单一原则
2.里氏替换原则
里氏替换原则定义:只要父类能出现的地方子类就可以出现,替换为子类也不会产生任何错误和异常,但是反过来却不行,有子类的地方父类未必能适应
里氏替换原则为良好的继承定义了规范
1.子类必须完全实现父类的方法,如果子类不能完整的实现父类的方法,建议断开继承,采用依赖,聚集,组合等关系代替继承
2.子类可以有自己的个性
3.覆盖或实现父类方法时参数可以被放大
4.覆写或实现父类方法时输出结果可以被缩小
3.依赖倒置原则
在Java中的表现是:
1.模块间的依赖通过抽象发生,实现类之间不存在直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
2.接口或抽象类不依赖实现类
3.实现类依赖接口或抽象类
依赖的三种写法:
1.构造函数传递依赖对象
2.Setter方法传递依赖对象
3.接口声明传递依赖对象
依赖倒置需遵循规则:
1.每个类尽量都有接口或抽象类
2.变量的表面类型尽量是接口或抽像类
3.任何类都不应该从具体类派生
4.尽量不要覆写基类的方法
5.结合里氏替换原则使用
4.接口隔离原则
两种接口:
1.实例接口,例如:Person lisi = new Person()产生一个实例,这个实例要遵从的就是Person这个类,Person就是lisi的接口。
2.类接口,interface关键字定义的接口
接口隔离原则定义:建立单一接口,不要建立臃肿的接口
通过分散定义接口可以预防未来变更的扩散,提高系统灵活性和可维护性
接口隔离原则含义:
1.接口要尽量小,但不能违反单一职责原则
2.接口要高内聚,即减少对外交互,提高接口,类,模块处理能力
3.定制服务
4.接口设计是有限度的
5.迪米特法则
定义:一个对象应该对其他对象有最少的了解
含义:
1.一个方法尽量不引入一个类中不存在的对象JAVAAPI除外
2.尽量不要公布太多的public方法和非静态的public变量
3.如果一个方法放在本类中,既不增加类间的关系,也对本类不产生负面影响,那就放置在本类中
6.开闭原则
定义:软件实体应该对扩展开发,对修改关闭
开闭原则可以提高代码复用性,可维护性,并且符合面向对象开发的要求
如何使用开闭原则:
抽象约束:
1.通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中没有的public方法
2.参数类型,引用对象尽量使用接口或抽象类,而非实现类
3.抽象层尽量保持稳定
元数据控制模块行为
制定项目章程
封装变化
项目的设计原则:
软件的设计体现了哲学的思想,计算机的一些原理和架构也可以指导生活,生活中一些解决问题的方法也可以应用到计算机中
将一个大功能拆成小功能,每个功能尽可能小,一个功能一个模块,模块的功能尽量的单一,模块可能有一个或多个类组成(类和类的关系有:封装,继承,多态)
项目中往往会存在一个管理器,相当于负责人一样,负责将多个模块组装起来,调用。