下载 23种设计模式源码 :http://download.csdn.net/download/knight_black_bob/8936043
创建型模式,共五种:
工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式
结构型模式,共七种:
适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式
行为型模式,共十一种:
策略模式 模板方法模式 观察者模式 迭代子模式 责任链模式 命令模式
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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!