首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式-笔记(二)

2012-11-13 
设计模式-笔记(二)抽象类:Animal 具体实现Dog和Cat针对实现编程:Dog d new Dog();d。bark();?针对接口/超

设计模式-笔记(二)

抽象类:Animal 具体实现Dog和Cat

针对实现编程:

Dog d = new Dog();

d。bark();

?

针对接口/超类型编程

Animal animal = new Dog();

animal。makeSound();

?

整合鸭子的行为

?

关键在于,鸭子现在会将飞行和呱呱叫的动作”委托“(delegate)别人处理,而不是使用定义在Duck类(或子类)内的呱呱叫和飞行方法。

?

Duck.java

FlyBehavior flyBehavior

QuackBehavior quackBehavior

?

performQuack(){

?quackBehavior.quack();

}

swim()

display()

performFly(){

...

}

?

想进行呱呱叫的动作,Duck对象只要叫quackBehavior对象去呱呱叫就可以了。在这部分的代码中,我们不在乎quackBehavior接口的对象到底是什么,我们只关心该对象知道如何进行呱呱叫就够了。

?

public class MallardDuck extends Duck{

??? public MallardDuck(){

??????? quackBehavior?= ?new Quack();//绿头鸭使用Quack类处理呱呱叫,所以当performQuack()被调用时,叫的职责被委托给Quack对象,而我们得到了真正的呱呱叫。

??????? flyBehavior??=????new FlyWithWings();

?

}

}

?

wait,你不是说过我们将不对具体实现编程吗?但是我们在那个构造器里做什么呢?我们正在制造一个具体的Quack实现类的实例!

?

热点排行