接口不具有实现代码,所以继承接口无法达到代码的复用。这意味着:无论何时你需要修改某个行为,必须往下追踪并在每一个定义此行为的类中修改它。所以适当的时候可以先对接口做一些基础实现。直接实现接口的行为也是一种面向实现编程。
策略模式:定义了算法族,分别封装起来,让他们之间可以互换(实现了相同的接口),此模式让算法的变化独立于使用算法的客户。
1 namespace DesignPattern 2 { 3 public class Duck 4 { 5 public IFlyBehavior IFlyBehavior; 6 public IQuackBehavior IQuackBehavior; 7 public Duck(IFlyBehavior fly,IQuackBehavior quack) 8 { 9 this.IFlyBehavior = fly; 10 this.IQuackBehavior = quack; 11 } 12 public void Display() 13 { 14 15 } 16 } 17 }
OO原则:
1. 封装变化
2. 多用组合少用继承
3. 针对接口编程,不针对实现编程