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

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

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

在后来,我们添加一个可以同时在网络存储上持久化数据的装饰器(具体装饰):

//装饰--存入网络其他地方public class PersistentNetDecorator extends PersistentDecorator {    public PersistentNetDecorator(IPersistentUtil iPersistentUtil){        super(iPersistentUtil);    }    @Override    public void persistentMsg(String msg) {        iPersistentUtil.persistentMsg(msg);        persistentToNet(msg);    }    private void persistentToNet(String msg){        System.out.println(msg  " 存入网络的其他地方");    }}

接下来就是要使用并验证:

public class TestUse {    public static void main(String args[]){        //被装饰者        final String data = "数据";        IPersistentUtil iPersistentUtil = new PersistentUtil();        iPersistentUtil.persistentMsg(data);        System.out.println("下面装饰持久化:");        iPersistentUtil = new PersistentDbDecorator(iPersistentUtil);        iPersistentUtil.persistentMsg(data);        System.out.println("下面继续装饰网络存储器持久化:");        iPersistentUtil = new PersistentNetDecorator(iPersistentUtil);        iPersistentUtil.persistentMsg(data);    }}

控制台的输出:

数据 存入文件下面装饰持久化:数据 存入文件数据 存入下面继续装饰网络存储器持久化:数据 存入文件数据 存入数据 存入网络的其他地方

可以看到,使用了装饰器的对象,功能已经增强了,而且可以使用多个装饰器。

在Java.io包中,很多类的设计,都用到了装饰器模式(如Reader相当于抽象的被装饰者,FileReader相当于具体的被装饰者,BufferedReader相当于装饰),有兴趣的同学可以去看看源码。

总结

好了,至此,23种设计模式在Java中的应用就介绍完了。

写代码不能太死板(这是必须的),就像上面的设计模式,我们也不能就非得完全按照其介绍的那么做,很多时候需要变通。比如单例模式,我们可以利用类的原理,不让对象不受控制的创建,而是以我们预期的数量,也就是可控的多个实例,这显然是不符合单例模式的描述的,但这样做有时候确实是有好处。

很多模式之间是有很多相之处的,实现上稍作修改,就变成了另外一种模式。模式也不能滥用,只是在我们设计的时候,给出一种引导,以某种方式实现需求,可能会更加简单,方便,容易维护。


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

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

    • 罗东阳
      罗东阳

      成天都在更新

    • 刘宇娟
      刘宇娟

      由于信息情报获取的能力的不足

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