一、设计原则
- 找出应用中可能需要变化之处,把他们独立出来,不要和不需要变化的代码混在一起;
- 针对接口编程(针对超类型suppertype编程:“变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只要是具体实现此超类型的类所产生的对象,都可以指定给这个变量。这也意味着,声明类时不用理会以后执行时的真正对象类型”),而不是针对实现编程;
`//针对实现编程
Dog g = new Dog
g.bark();
//针对接口/超类型编程
Animal animal = new Dog();
animal.makeSound();
//子类实例化的动作不在需要在代码中硬编码,而是在运行时才指定具体实现的对象
a = getAnimal();
a.makeSound();
`
- 多用组合,少用继承。