b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

解释器模式举例_lua解释器交互模式_动态编译与解释器模式(28)

电脑杂谈  发布时间:2017-02-22 17:29:35  来源:网络整理
//具体状态public enum SaveMiddleData implements ISaveData{    instance;    @Override    public void save(Object data) {        System.out.println("保存到Mysql:"  data);    }}
//具体状态public enum SaveBigData implements ISaveData{    instance;    @Override    public void save(Object data) {        System.out.println("保存到文件:"  data);    }}

使用:

public class TestUse {    public static void main(String args[]){        String smallData = "小数据";        String middleData = "介于小数据和大数据之间的数据";        String bifgData = "这里就假定这是一个很大很大很大的数据";        SaveDataController saveDataController = new SaveDataController();        saveDataController.save(smallData);        saveDataController.save(middleData);        saveDataController.save(bifgData);    }}

输出:

保存到Redis:小数据保存到Mysql:介于小数据和大数据之间的数据保存到文件:这里就假定这是一个很大很大很大的数据

可以看到,我们对三种数据都使用了同一个对象的相同方法,但是行为是不同的,因为他们的状态不一样。

上面例子的状态更改是自动的,也可以添加setState()方法,手动切换状态,并在执行的方法体中不在自动判断状态。不过自动判断的,更智能一些,而手动切换状态的,可控性更好。

14、策略模式(Strategy Pattern)

定义一系列算法,把他们一个个封装起来,并且使他们可相互替换。本模式使得算法可独立于其他客户端而变化。

何时使用

优点

策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。下面就以一个示意性的实现讲解策略模式实例的结构。

策略模式中包括三种角色:

策略(Strategy):一个接口,定义了若干个算法(抽象方法)。 具体策略(ConcreteStrategy):策略的实现。 上下文/环境(Context):依赖于策略接口的类。

策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。

策略模式一个很大的特点就是各个策略算法的平等性。对于一系列具体的策略算法,大家的地位是完全一样的,正因为这个平等性,才能实现算法之间可以相互替换。所有的策略算法在实现上也是相互独立的,相互之间是没有依赖的。所以可以这样描述这一系列策略算法:策略算法是相同行为的不同实现。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-28.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...