1.针对接口编程,而不要针对实现编程(策略模式)
针对接口编程真正的意思是针对超类型(supertype)编程,关键在多态(程序可以针对超类型编程,执行时会根据实际情况执行真正的行为,不会被绑死在
超类型的行为上)。针对超类型编程可以明确地说成变量的声明应该是超类型,通常是一个抽象类或者一个接口。
例子
(1)针对实现编程
Dog d = new Dog();
d.bark();
(2)针对超类型编程
Animal animal = new Dog();
animal.makeSound();
2.松耦合(观察者模式)
松耦合的威力:当两个对象之间松耦合,它们之间依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。
关于观察者的一切,主题只知道观察者实现了某个接口,主题不需要知道观察者的具体类是谁、做了什么或者其它细节。改变主题或者观察者其中一方,并不会影响
另一方。因为两者是松耦合的,只要他们之间的接口仍然被遵守,就可以自由的改变他们。
设计原则:为了交互对象之间的松耦合设计而努力。
松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的相互依赖降低到最低。
3.开放-关闭原则:类应该对扩展开放,对修改关闭(装饰者模式)
我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。这样设计具有弹性可以应对改变,可以接受新的功能来应对改变的需求。
4.依赖倒置原则(Dependency Inversion Principle):减少对于具体类的依赖,要依赖抽象,不要依赖具体类。不能让高层组件依赖底层组件,而且,不管高层和低层组件,两者都应该依赖于抽象。
避免违反依赖倒置原则:
(1)变量不可以持有具体类的引用。
(2)不要让类派生自具体类。
(3)不要覆盖基类中已实现的方法。
尽量达到这个原则,而不是随时都要遵守这些原则。
针对接口编程真正的意思是针对超类型(supertype)编程,关键在多态(程序可以针对超类型编程,执行时会根据实际情况执行真正的行为,不会被绑死在
超类型的行为上)。针对超类型编程可以明确地说成变量的声明应该是超类型,通常是一个抽象类或者一个接口。
例子
(1)针对实现编程
Dog d = new Dog();
d.bark();
(2)针对超类型编程
Animal animal = new Dog();
animal.makeSound();
2.松耦合(观察者模式)
松耦合的威力:当两个对象之间松耦合,它们之间依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。
关于观察者的一切,主题只知道观察者实现了某个接口,主题不需要知道观察者的具体类是谁、做了什么或者其它细节。改变主题或者观察者其中一方,并不会影响
另一方。因为两者是松耦合的,只要他们之间的接口仍然被遵守,就可以自由的改变他们。
设计原则:为了交互对象之间的松耦合设计而努力。
松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的相互依赖降低到最低。
3.开放-关闭原则:类应该对扩展开放,对修改关闭(装饰者模式)
我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。这样设计具有弹性可以应对改变,可以接受新的功能来应对改变的需求。
4.依赖倒置原则(Dependency Inversion Principle):减少对于具体类的依赖,要依赖抽象,不要依赖具体类。不能让高层组件依赖底层组件,而且,不管高层和低层组件,两者都应该依赖于抽象。
避免违反依赖倒置原则:
(1)变量不可以持有具体类的引用。
(2)不要让类派生自具体类。
(3)不要覆盖基类中已实现的方法。
尽量达到这个原则,而不是随时都要遵守这些原则。