java OOP中常用的设计原则

来源:互联网 发布:如何查看计算机mac地址 编辑:程序博客网 时间:2024/05/19 18:39

1 接口编程原则(Interface Program)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。

2 单一职责原则(Single Responsibility Principle):就一个类而言,应该仅有一个引起它变化的原因。换句话说,一个类的功能要单一,只做与它相关的事情。

3 开放封闭原则(Open-Closed Principle):对修改封闭,扩展开放。对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况;对修改封闭,意

味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

4  里氏代换原则(LisKov SubStitution Principle):一个软件实体如果使用的是基类的话,那么也一定适用于其子类,而且它根本察觉不出用得是基类还是子类。反过来则不成

立,即一个软件实体如果使用的是子类对象,那么它不适用于基类。在这里要注意的是,子类在覆盖了父类的情况下,则子类的方法的访问权限是不能低于父类方法的访问权限

的。

5 迪米特法则(Law of Demeter)又叫最少知识原则(LeastKnowledge Principle):狭义的迪米特法则是指:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的

相互作用。如果其中一个类需要调用另一类的某一个方法的话,可以通过第三者转发这个调用。

广义的迪米特法则是指:一个模块设计的好坏的一个重要标志就是该模块在多大程度上讲自己的内部数据与实现的有关细节隐藏起来。

一个软件实体应当尽可能少的与其他实体发生相互作用。

6 合成聚合复用原则(Composite Aggregate Reuse Principle):为何“要尽量使用合成和聚合,尽量不要使用继承”呢?这是因为:第一,继承复用破坏包装,它把超类的实现

细节直接暴露给了子类,这违背了信息隐藏的原则;第二:如果超类发生了改变,那么子类也要发生相应的改变,这就直接导致

了类与类之间的高耦合,不利于类的扩展、复用、维护等,也带来了系统僵硬和脆弱的设计。而是用合成和聚合的时候新对象和已有对象的交互往往是通过接口或者抽象类进行

的,就可以很好的避免上面的不足,而且这也可以让每一个新的类专注于实现自己的任务,符合单一职责原则。,也不是说在任何环境下使用合成聚合复用原则就是最好的,如果

两个类之间在符合分类学的前提下有明显的“IS-A”的关系,而且基类能够抽象出子类的共有的属性和方法,而此时子类有能通过增加父类的属性和方法来扩展基类,那么此时使用继

承将是一种更好的选择。


0 0