访问者模式

    访问者模式:常用在需要对系统添加新的功能,但是不希望破坏原有的结构,这个时候就可以使用访问者模式。使用前提是数据结构很少发生改动,同时对数据的操作可能经常会添加新的操作。

代码如下

public class test

{

    public static void main(String[] args)

    {

        persion p=new man("mike");

        visiter v=new visiterA();

        p.accept(v);

        p=new woman("lily");

        p.accept(v);

    }

}

 

 

abstract class persion

{

    public String name;

    public persion(String name)

    {

        this.name=name;

    }

    public abstract void accept(visiter v);

}

 

 

class man extends persion

{

    public man(String name)

    {

        super(name);

    }

    public void accept(visiter v)

    {

        v.show(this);

    }

}

 

class woman extends persion

{

    public woman(String name)

    {

        super(name);

    }

    public void accept(visiter v)

    {

        v.show(this);

    }

}

 

abstract class visiter

{

    abstract void show(man m);

    abstract void show(woman m);

}

 

class visiterA extends visiter

{

    void show(man m)

    {

        System.out.println("man");

    }

    void show(woman m)

    {

        System.out.println("woman");

    }

}

image

 

当软件有了新的需求的时候,只需要创建一个能够满足这样需求的特殊visiter,然后将这个visiter传给前台的具体数据对象,即可完成新的功能,同时不需要对代码结构进行修改,充分达到了数据结构与操作分离的目的。前台的代码逻辑也不需要变动。

联系我:renhanlinbsl@163.com

2016-8-21

21:47

转载于:https://www.cnblogs.com/ives/p/visiter_pattern.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值