本文转载: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.抽象层尽量保持稳定

元数据控制模块行为

制定项目章程

封装变化


项目的设计原则:

软件的设计体现了哲学的思想,计算机的一些原理和架构也可以指导生活,生活中一些解决问题的方法也可以应用到计算机中

将一个大功能拆成小功能,每个功能尽可能小,一个功能一个模块,模块的功能尽量的单一,模块可能有一个或多个类组成(类和类的关系有:封装,继承,多态)

项目中往往会存在一个管理器,相当于负责人一样,负责将多个模块组装起来,调用。