设计模式——策略模式

很感谢《Head First 设计模式》的作者!专业不古板,生动的用例子去解释每个设计模式,并模拟有相同点的设计模式以对话的形式出现在各章节。分别介绍自己的用途!让我加深对它们的理解!下面是我学到得第一个设计模式,策略模式,也就是《Head First 设计模式》第一章

策略模式

 

定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

应用到的设计原则有:

1、  找出应用中可能需要变化之处,然后把它们独立出来,不要和那些不需要变化的代码混在一起。(另一种理解方式:把会变化的部分取出来并“封装”起来,以后可以轻易地改动或扩充此部分而不影响不需要变化的其他部分。)

2、  针对接口编程,而不是针对实现编程。(针对接口编程也可以理解为针对超类型编程。也可更明确的说成“变量的声明类型应该是超类型,而通常是一个抽象类或一个接口”。)

3、  多用组合,少用继承

作业如下:编写一个动作冒险游戏,一个角色在同一时间只能使用一把武器,但是可在游戏过程中换武器!

 

思考过程:

根据上面第一个原则,我们可以找出,在这个作业中,每个角色是使用什么武器是今后是会变化的,所以我们要把它独立出来。

现在,要分开“变化和不会变化的部分”。我们准备实现一组类,让我们各自的武器去实现攻击的方法(当然,如果你想实现更多的时候!可以在添加一组,比如跳舞)!

当然我们希望一切都有弹性,我们想在角色类中包含设定武器的方法,这样就可以实现在游戏过程中更换武器了!

现在,我们要实现上面的目标了,我们可以定义一个接口去代表武器的攻击行为,而所有的武器类都应该实现这个接口!这样的话,我们的角色类只用知道攻击接口里面的方法就行了,而不用担心各种武器的攻击方法实现了!那我就可以在角色类中存在着那个接口的变量!在角色要攻击时,我们把攻击的行为“委托”(delegate)给接口处理。当想要改变武器时,我们只需要改变接口的引用就好!

       注:其实这是书上总结下来的,我知道有表达的很不清晰,因为我在遇到一个问题的时候不知道应该怎样去更好的思考方式,所以真心的希望大侠们能给我一些好的方面的建议!

在资源里面有我的代码示例!

第一章总结

 

1、知道OO基础,并不足以让你设计出良好的))系统。

2、良好的OO设计必须具备可复用、可扩充、可维护三个特性。

3、模式可以让我们建造出具有良好OO设计质量的系统。

4、模式被认为是历经验证的OO设计经验。

5、模式不是代码,而是针对设计问题的通用解决方案。你可把它们应该到特定的应用中!

6、模式不是被发明、而是被发现。

7、大多数的模式和原则,都着眼于软件变化的主题。

8、大多数的模式都允许系统局部改变独立于其他部分。

9、我们常把系统中会变化的部分抽出来封装。

10、模式让开发人员之间有共享的语言,能够最大化沟通的价值。

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值