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

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

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

我们来分析上例:这个对象有3个成员变量,而其中一个是有transient关键字申明的,一个是序列化id,一个是普通变量,在main方法中,想创建了对象,并设置,然后写入到文件,再从文件读出来,最后输出读出来的对象的变量,普通变量是可以正常输出的(序列化id也可以,只是此处没有输出来而已),而transient申明的变量为0了,那就证明这个变量没有被保存到文件中,因为这个关键字声明的变量在序列化时会被忽略,而是后来创建时被自动初始化为0了(java中类的成员变量是基本数据类型时,如果没有初,就会被自动初始化为0)。

额...这里是介绍模式,好像说得多了点,那原型模式就介绍到这儿了。

6、责任链模式(Chain of Responsibility Pattern)

使很多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

何时使用

有许多对象可以处理用户请求,希望程序在运行期间自动确定处理用户的那个对象。 希望用户不必明确指定接收者的情况下,想多个接受者的一个提交请求 程序希望动态的指定可处理用户请求的对象集合

优点

低耦合 可以动态的添加删除处理者或重新指派处理者的职责 可以动态改变处理者之间的先后顺序

通常来说,一个纯粹的责任链是先传给第一个处理,如果处理过了,这个请求处理就此结束,如果没有处理,再传给下一个处理者。

比如我们有一个数学公式,有一个整数输入,要求小于0时返回绝对,其次,小于10的时候返回他的二次幂,否则,返回他本身:

首先我们要定义一个接口(处理者),来描述他们共有的行为:

//处理者public intece Handler {    int handleRequest(int n);    void setNextHandler(Handler next);}

然后是具体的处理者(3个):

//第一个具体处理者,处理小于0的public class Handler1 implements Handler {    private Handler next;    @Override    public int handleRequest(int n) {        if(n<0) return -n;        else{            if(next==null)                throw new NullPointerException("next 不能为空");            return next.handleRequest(n);        }    }    @Override    public void setNextHandler(Handler next) {        this.next = next;    }}
//第二个具体处理者,处理>=0但小于10的public class Handler2 implements Handler {    private Handler next;    @Override    public int handleRequest(int n) {        if(n<10) return n*n;        else{            if(next==null)                throw new NullPointerException("next 不能为空");            return next.handleRequest(n);        }    }    @Override    public void setNextHandler(Handler next) {        this.next = next;    }}


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

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

    • 秦克
      秦克

      好好读一读刘亚洲的文章就知道了

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