明白了什么是面向接口编程,以及面向接口编程的重要性之后。
接下来看看如何做面向接口编程。
比如一个Duck类,将其可能变化的行为部分从Duck类剥离,放入一个接口。
Duck类通过声明一个接口类型如FlyBehavior flyBehavior,并动态地设置fyBehavior以在运行时引用正确的行为类型如FlyWithWings或者FlyNoWay。
Duck类通过调用FlyBehavior的具体实现类的实例来进行飞行行为,即,可以调用FlyWithWings的实例,也可以调用FlyNoWay的实例。
这样,只要改变实例变量flyBehavior引用的接口类型的具体实现类的实例,就可以改变具体的飞行行为。
这就是面向接口编程的好处。