package fangwenzhemoshi;
public abstract class Vistor {
public abstract void getManConclusion(男人 m);
public abstract void getWomanConclusion(女人 w);
}
package fangwenzhemoshi;
public abstract class Person {
public abstract void Accept(Vistor v);
}
package fangwenzhemoshi;
public class 男人 extends Person {
@Override
public void Accept(Vistor v) {
v.getManConclusion(this);
}
}
package fangwenzhemoshi;
public class 女人 extends Person {
@Override
public void Accept(Vistor v) {
v.getWomanConclusion(this);
}
}
package fangwenzhemoshi;
public class 成功 extends Vistor {
@Override
public void getManConclusion(男人 m) {
System.out.println(m.getClass().getSimpleName()+this.getClass().getSimpleName()+"时"+"背后多有一个成功的女人");
}
@Override
public void getWomanConclusion(女人 w) {
System.out.println(w.getClass().getSimpleName()+this.getClass().getSimpleName()+"时"+"背后多有一个不成功的男人");
}
}
package fangwenzhemoshi;
public class 失败 extends Vistor {
@Override
public void getManConclusion(男人 m) {
System.out.println(m.getClass().getSimpleName()+this.getClass().getSimpleName()+"时"+"闷头喝酒谁也不用劝");
}
@Override
public void getWomanConclusion(女人 w) {
System.out.println(w.getClass().getSimpleName()+this.getClass().getSimpleName()+"时"+"眼泪汪汪谁劝也没用");
}
}
package fangwenzhemoshi;
import java.util.ArrayList;
public class Structure {
private ArrayList<Person>elements=new ArrayList<Person>();
public void Attach(Person element)
{elements.add(element);
}
public void Remove(Person element)
{elements.remove(element);
}
public void Display(Vistor v)
{for(Person e:elements)
{e.Accept(v);
}
}
}
package fangwenzhemoshi;
public class Test {
public static void main(String args[])
{Structure s=new Structure();
s.Attach(new 男人());
s.Attach(new 女人());
成功 v1=new 成功();
s.Display(v1);
失败 v2=new 失败();
s.Display(v2);
}
}