public interface IVisitor {
public void accept(Feman feman);
public void accept(Man man);
}
public class Visitor implements IVisitor {
public void accept(Feman feman) {
System.out.println(feman.getSex() + ":执行相关操作");
}
public void accept(Man man) {
System.out.println(man.getSex() + ":执行相关操作");
}
}
public abstract class Person {
private String sex;
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void accept(Visitor visitor) {
};
}
public class Man extends Person {
public Man() {
this.setSex("男");
}
@Override
public void accept(Visitor visitor) {
visitor.accept(this);
}
}
public class Feman extends Person {
public Feman() {
this.setSex("女");
}
@Override
public void accept(Visitor visitor){
visitor.accept(this);
}
}
public class ObjectStruture {
public static List<person> getList() {
List<person> list = new ArrayList<person>();
list.add(new Man());
list.add(new Feman());
list.add(new Feman());
return list;
}
}
Visitor visitor = new Visitor();
List<person> list = ObjectStruture.getList();
for (Person e : list) {
e.accept(visitor);
}
男:执行相关操作 女:执行相关操作 女:执行相关操作
public interface Visitor
{
public void visit(GladiolusConcreteElement gladiolus);
public void visit(ChrysanthemumConreteElement chrysanthemum);
}
public interface FlowerElement
{
public void accept(Visitor visitor);
}
public class GladiolusConcreteElement implements FlowerElement
{
@Override
public void accept(final Visitor visitor)
{
visitor.visit(this);
}
}
public class ChrysanthemumConreteElement implements FlowerElement
{
@Override
public void accept(final Visitor visitor)
{
visitor.visit(this);
}
}
public class GladiolusVisitor implements Visitor
{
@Override
public void visit(final GladiolusConcreteElement gladiolus)
{
System.out.println(this.getClass().getSimpleName() + " access " + gladiolus.getClass().getSimpleName());
}
@Override
public void visit(final ChrysanthemumConreteElement chrysanthemum)
{
System.out.println(this.getClass().getSimpleName() + " access " + chrysanthemum.getClass().getSimpleName());
}
}
public class ChrysanthemumConreteElement implements FlowerElement
{
@Override
public void accept(final Visitor visitor)
{
visitor.visit(this);
}
}
public class ObjectStructure
{
private final List<FlowerElement> elements = new ArrayList<FlowerElement>();
public void addElement(final FlowerElement e)
{
elements.add(e);
}
public void removeElement(final FlowerElement e)
{
elements.remove(e);
}
public void accept(final Visitor visitor)
{
for (final FlowerElement e : elements)
{
e.accept(visitor);
}
}
}
public class Client
{
public static void main(final String[] args)
{
final ObjectStructure os = new ObjectStructure();
os.addElement(new GladiolusConcreteElement());
os.addElement(new ChrysanthemumConreteElement());
final GladiolusVisitor gVisitor = new GladiolusVisitor();
final ChrysanthemumVisitor chVisitor = new ChrysanthemumVisitor();
os.accept(gVisitor);
os.accept(chVisitor);
}
}
GladiolusVisitor access GladiolusConcreteElement GladiolusVisitor access ChrysanthemumConreteElement ChrysanthemumVisitor access GladiolusConcreteElement ChrysanthemumVisitor access ChrysanthemumConreteElement
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有