设计原则

设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的部分。

设计原则2:针对接口编程,而不是针对实现编程。

  针对接口编程的真正意思是针对超类型编程:这里所谓的接口有多个含义,接口是一个概念,也是一种Java的interface构造。你可以在不涉及interface的情况下,针对接口编程,关键就在多态。利用多态,程序可以针对超类型编程,执行时会根据实际状况执行到真正的行为,不会被捆绑死在超类型的行为上。针对超类型编程这句话,可以更明确地说成变量的声明类型应该是超类型,通常是一个抽象类或是一个接口,如此,只要是具体实现次超类型的类所产生的对象,都可以指定给这个变量。这也意味着,声明类时不用理会以后执行时的真正对象类型。

针对实现编程:                                                              针对接口编程:

  Dog d = new Dog();                                                     Animal animal = new Dog();

  d.bark();                                                                      animal.makeSound();

设计原则3:多用组合,少用继承

  使用组合建立系统具有很大的弹性,不仅可将算法族封装,更可以在运行时动态的改变行为,只要组合后的行为对象符合正确的接口标准即可。

设计原则4:为了交互对象之间的松耦合设计而努力。

  关于观察者的一切,主题只知道观察者实现了某个接口。主题不需要知道观察者的具体类是谁,做了什么或者其他任何细节。任何时候我们都可以增加新的观察者。因为主题唯一依赖的东西是一个实现Observer接口的对象列表,所以我们可以随时增加观察者;在运行时用新的观察者取代现有的观察者或删除某些观察者。

设计原则5:类应该对扩展开放,对修改关闭

  我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。

设计原则6:要依赖抽象,不要依赖具体类(依赖倒置原则)

  这个原则说明了不能让高层组件(有其他底层组件定义其行为的类)依赖底层组件,而且不管高层或底层组件,两者都应该依赖于抽象。

下面的知道方针,能避免你在oo涉及中违反依赖倒置原则:

  变量不可以持有具体类的引用;不要让类派生自具体类;不要覆盖基类中以实现的方法

设计原则7:最少知识原则:只和你的密友谈话

  这个原则说明我们只应该调用属于以下范围的方法:

    该对象本身;

    被当做方法的参数而传递进来的对象;

    此方法所创建或实例化的任何对象;

    对象的任何组件

设计原则8:好莱坞原则:别调用我们,我们会调用你

设计原则9:一个类应该只有一个引起变化的原因

  内聚用来度量一个类或模块紧密地达到单一目的或责任。当一个模块或一个类被设计成只支持一组相关的功能的时候,我们说它具有高内聚。

原文地址:https://www.cnblogs.com/forerver-elf/p/5977372.html