策略模式

哈,今天第一次发博客哈。。。

嗯,虽然一直都想发博客来记录自己的学习中的收获或者困难,但自己这个人一直比较懒,所以也老是想想就算了。

碰巧最近比较悠闲,也终于可以抽出时间来记录一些东西。请注意,我没用分享这个词而是用的记录。因为一直觉得自己比较菜,写的东西只能自己看看,误导了别人就不好了。当然如果对别人有所帮助那我也蛮开心的。也挺希望可以和大家多交流,多沟通,提高自己。

==================================分割线===============================

好了,不废话了。今天呢,主要是将自己最近看的一本书《Head First 设计模式》中学到的关于设计模式的一些收获总结一下。

嗯,就按原书的顺序来吧,首先说一下策略模式。。。

我们都知道,我们应该把一些常用的,共有的方法或者变量放在超类里,然后在子类里不断扩展其它行为。扩展的行为你会怎么做呢?先放在超类里?然后在子类中覆盖?

嗯,大概一般有点经验的同学都不会这样做吧?举个例子,A是一个超类,B,C都是A的子类。如果B现在要扩展一个行为,那么如果在一开始就在A中加入这个行为,那么你要在

C类中覆盖这个方法并且什么都不做。听起来有点怪异哈。而且如果有很多像C这样的类,你就得一个个去覆盖这个方法并把方法体内留空。。。。

然后有的同学说用接口啊。嗯,已经很接近了。用接口的确可以解决一部分问题。现在我们可以对某个特定的子类扩展一些方法,并且不用担心影响到其它子类。但问题是这样

代码的复用效率是极低的。想一想,如果B,C都要扩展同一种行为,那么你还要在B,C中分别实现一个接口,然后写一样的代码。。。记得以前看过一句话:永远不要写重复的代码!尽管说得比较绝对,但好的程序确实应该降低代码的重合度。不仅为了后面维护,还为了代码的整洁。

说到这里,想必大家都想到解决办法了,就是把接口的实现类单独放在一边。然后在超类里放一个接口变量,在子类里动态地设置接口的实现类的变量。不仅灵活度大多了,而且还可以实现代码复用。

==========================================分割线====================================

第一次写博客哈,如果有什么写得不好的地方希望大家多多指正。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值