访问者模式:常用在需要对系统添加新的功能,但是不希望破坏原有的结构,这个时候就可以使用访问者模式。使用前提是数据结构很少发生改动,同时对数据的操作可能经常会添加新的操作。
代码如下
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");
}
}
当软件有了新的需求的时候,只需要创建一个能够满足这样需求的特殊visiter,然后将这个visiter传给前台的具体数据对象,即可完成新的功能,同时不需要对代码结构进行修改,充分达到了数据结构与操作分离的目的。前台的代码逻辑也不需要变动。
联系我:renhanlinbsl@163.com
2016-8-21
21:47