深入浅出设计模式--策略模式

前言

这是我读深入浅出设计模式所作的笔记,这本书浅显易懂,挺有趣的如果是想入门设计模式的同学,你一定会爱上这本书。

问题描述:特立独行的橡皮鸭

有一款游戏,内容是模拟鸭子的活动,有不同种类的鸭子如野鸭,家鸭,绿头鸭,他们到会叫,会游泳,所以小明设计了如下类:
在这里插入图片描述
问题来了,有一天,策划想要在游戏里加入一种特殊的鸭子,橡皮鸭。橡皮鸭不会叫,也不会游泳,只会浮在水面上,并且策划还计划着加入更多行为不同的鸭子。小明该怎么改变程序让其可以适应不断增加鸭子呢?

问题分析:虽然都是鸭子,但行为可能不一样

导致上述问题的原因是程序设计时并没有考虑到鸭子的行为会变化。子类继承基类方法,可以复用代码,但导致在维护阶段对程序扩充的困难。如果使用重载方法,将行为的实现放在子类里,相同行为的实现代码在多个子类重复,维护时需要对每个子类进行修改,可维护差。

解决方法–策略模式

策略模式主要是用来封装一组可以互相替代的算法族,并且可以根据需要动态地去替换使用的算法。具体到问题就是:行为类实现具体的行为,并作为鸭子类的成员,鸭子类通过调用行为类的方法实现功能。通过替换行为类(基类可以被其子类替换),实现运行时改变行为。

涉及的设计原则:
封装变化
针对接口编程,而不是针对实现编程
多用组合,少用继承
在这里插入图片描述

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值