理论部分,参考博文:http://blog.csdn.net/hguisu/article/details/75582491.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类...
分类:
移动开发 时间:
2014-10-29 13:02:51
阅读次数:
213
又和大家见面了,能够坚持写出第二篇文章真不错,好好加油。
>讲解策略模式是以商场收银软件程序开头的,那么问题来了,哪家商场收银软件强,开玩笑了。读过上篇文章《《简单工厂模式》》的知道,它有两个缺点:1、客户端依赖两个类,耦合性高;2、如果算法过多则需要写很多类。解决上面问题的就是策略模式了。
策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不...
分类:
其他好文 时间:
2014-10-26 19:47:11
阅读次数:
169
使用Lambda表达式进行设计
在前面的几篇文章中,我们已经见识到了Lambda表达式是如何让代码变的更加紧凑和简洁的。
这一篇文章主要会介绍Lambda表达式如何改变程序的设计,如何让程序变的更加轻量级和简洁。如何让接口的使用变得更加流畅和直观。
使用Lambda表达式来实现策略模式
假设现在有一个Asset类型是这样的:
public class Asset {
...
分类:
编程语言 时间:
2014-10-25 07:03:55
阅读次数:
350
1. 简介策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。2. 组成—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。—具体策略角色:包装了相关的算法和行为。—环境角色:持有一个策略类的引用,最终给客户端调用。3. 程序...
分类:
其他好文 时间:
2014-10-23 01:20:33
阅读次数:
206
策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。
策略模式是一个比较容易理解和使用的设计模式,策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。策略模式通常把一个系列的算法封装到一系列的策略类里面,作为...
分类:
其他好文 时间:
2014-10-22 22:06:54
阅读次数:
180
1、MVC模式:2、代理模式:3、单例模式:4、观察者模式:Notification、KVO5、工厂模式:6、策略模式:
分类:
移动开发 时间:
2014-10-20 15:26:25
阅读次数:
135
里氏代换原则是指拥有相同基类的两个子类,在使用子类A的地方(方法/属性)可以用子类
B来代替.对于面向接口编程,我只需要保证代码的行为不变;基类所有的方法子类必须全部
实现,换过来,子类的方法基类不一定都有;
假设:有一个基类Base;其子类是Concrete;那么method(Base b)的调用可以转换成
method(Concrete c);
策略模式:一般,我们把解决某个问题的方...
分类:
其他好文 时间:
2014-10-20 15:12:41
阅读次数:
179
简单工厂模式是客户告诉工厂所需要的对象,然后由工厂生产对象交给客户,客户去具体考虑的使用对象中的方法。而策略模式则有所不同,客户自己创建对象,但是当客户需要调用对象的方法时,则交由另一个环境角色类(Context)来实现,客户本身不关心方法的具体实现过程。策略模式定义了一系列的算法,并将每一个算法封...
分类:
其他好文 时间:
2014-10-19 19:51:51
阅读次数:
169
摘要 策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的改变独立于使用算法的客户。
设计模式
我们先来看看问题 —— 现在我们需要实现一个模拟鸭子的游戏,游戏中会出现各种各样的鸭子,他们会有不同的飞行方式,同样有不同的鸣叫方式,同时我们要考虑到以后还可能出现更多的各种各样新式的鸭子,那我们该如何来实现呢?
1>我们来试试继承...
分类:
其他好文 时间:
2014-10-18 08:40:43
阅读次数:
282
策略模式是有客户端自行实例化算法类的,而简单工厂模客户端只传参数,不关心对象的生成。结合两种模式,可以在使用策略模式的时候客户端不再生成算法的对象。修改策略模式的配置类即可。在之前策略模式基础上,修改如下cg = new category_a();break; case 'b': $...
分类:
Web程序 时间:
2014-10-15 20:10:01
阅读次数:
215