设计模式-笔记(二)

抽象类: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实现类的实例!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值