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

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

电脑杂谈  发布时间:2017-02-22 17:29:35  来源:网络整理

运行期间,策略模式在每一个时刻只能使用一个具体的策略实现对象,虽然可以动态地在不同的策略实现中切换,但是同时只能使用一个。

经常见到的是,所有的具体策略类都有一些公有的行为。这时候,就应当把这些公有的行为放到共同的抽象策略角色Strategy类里面。当然这时候抽象策略角色必须要用Java抽象类实现,而不能使用接口。 这其实也是典型的将代码向继承等级结构的上方集中的标准做法。

上次我们使用状态模式将数据按不同状态保存到不同地方,这里,我们使用策略模式来实现通过不同的策略来选择数据的保存方式。

首先是抽象的数据保持类(策略):

//策略public intece ISaveData {    void save(Object data);}

然后是具体的数据保存类,三个(具体策略):

public class SaveToRedis implements ISaveData {    @Override    public void save(Object data) {        System.out.println("数据:"  data  " 保存到Redis");    }}
//具体策略public class SaveToFile implements ISaveData {    @Override    public void save(Object data) {        System.out.println("数据:"  data  " 保存到文件");    }}
//具体策略public class SaveToMysql implements ISaveData {    @Override    public void save(Object data) {        System.out.println("数据:"  data  " 保存到Mysql");    }}

最后是客户端(环境Context):

//环境public class SaveClient {    private ISaveData saveData;    public SaveClient(ISaveData saveData){        this.saveData = saveData;    }    public void setSaveData(ISaveData saveData){        this.saveData = saveData;    }    public void save(Object data){        saveData.save(data);    }}

使用:

public class TestUse {    public static void main(String args[]){        Object data = "数据";        ISaveData saveData = new SaveToRedis();        SaveClient client = new SaveClient(saveData);        client.save(data);        client.setSaveData(new SaveToFile());        client.save(data);    }}


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

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

    • 带小孩的鲁
      带小孩的鲁

      最起码也要先了解该产品的性质

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