23种设计模式源码 :
创建型模式,共五种: 结构型模式,共七种: 行为型模式,共十一种:
package 设计模式.访问者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月27日 上午10:02:46 * des: */public interface Visitable { public void accept(Visitor visitor);}
package 设计模式.访问者模式;import java.util.Collection;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月27日 上午10:03:07 * des: */public interface Visitor { public void visitString(StringElement stringE); public void visitFloat(FloatElement floatE); public void visitCollection(Collection collection); }
package 设计模式.访问者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月27日 上午10:04:06 des: */public class StringElement implements Visitable { private String value; public String getValue() { return value; } public StringElement(String value) { this.value = value; } @Override public void accept(Visitor visitor) { visitor.visitString(this); }}
package 设计模式.访问者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月27日 上午10:04:30 * des: */public class FloatElement implements Visitable { private Float value; public Float getValue() { return value; } public FloatElement(Float value) { this.value = value; } @Override public void accept(Visitor visitor) { visitor.visitFloat(this); }}
package 设计模式.访问者模式;import java.util.Collection;import java.util.Iterator; /** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月27日 上午10:05:29 * des: */public class ConcreteVisitor implements Visitor { @Override public void visitString(StringElement stringE) { System.out.println("i'm a string ,value is "+ stringE.getValue()); } @Override public void visitFloat(FloatElement floatE) { System.out.println("i'm a float ,value is "+ floatE.getValue()); } @Override public void visitCollection(Collection collection) { Iterator iterator = collection.iterator(); while (iterator.hasNext()) { Object o = iterator.next(); if (o instanceof Visitable) { ((Visitable) o).accept(this); } } } }
package 设计模式.访问者模式;import java.util.ArrayList;import java.util.Collection;/** * * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月27日 上午9:51:23 * des: */public class VisitorTest { public static void main(String[] args) { Visitor v = new ConcreteVisitor(); StringElement se = new StringElement("BAOYOU"); v.visitString(se); Collection list = new ArrayList<>(); list.add(new StringElement("baoyou")); list.add(new StringElement("baoyou2")); list.add(new FloatElement( new Float(12))); v.visitCollection(list); }}
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。