java學習

          java學習

           

          設計模式之訪問者模式

          訪問者模式主要是將很多操作都在一個接口中聲明,在接口的實現類中都要實現這些操作,
          在具體的訪問者類中規定了需要調用實現類的哪個方法,
          例子如下:
          訪問者接口:
          public interface Visitor {
          public void visitString(StringElement stringE);
              
              public void visitFloat(FloatElement floatE);
              
              public void visitCollection(Collection<?> collection);
              public void visitInt(IntElement inte);

          }
          訪問者接口實現類
          public class ConcreteVisitor implements Visitor{
              public void visitCollection(Collection<?> collection) {
                  Iterator<?> iterator = collection.iterator();
                  while (iterator.hasNext()) {
                      Object o = iterator.next();
                      if (o instanceof Visitable) {
                          ((Visitable)o).accept(this);
                      }
                  }
              }

              public void visitFloat(FloatElement floatE) {
                  System.out.println(floatE.getFe());
              }

              public void visitString(StringElement stringE) {
                  System.out.println(stringE.getSe());
              }

              @Override
              public void visitInt(IntElement inte) {
                  System.out.println(inte.getInts());
                  
              }

          }
          操作類的接口:

          public interface Visitable {
               public void accept(Visitor visitor);

          }
          操作類的具體實現類:
          public class FloatElement implements Visitable{
          private Float fe;
              
              public FloatElement(Float fe) {
                  this.fe = fe;
              }
              
              public Float getFe() {
                  return this.fe;
              }
              
              public void accept(Visitor visitor) {
                  visitor.visitFloat(this);
              }

          }
          public class IntElement implements Visitable{
              private int ints;

              public int getInts() {
                  return ints;
              }

              public IntElement(int i){
                  this.ints = i;
              }

              @Override
              public void accept(Visitor visitor) {
                  visitor.visitInt(this);
                  
              }

          }
          public class StringElement implements Visitable{
          private String se;
              
              public StringElement(String se) {
                  this.se = se;
              }
              
              public String getSe() {
                  return this.se;
              }
              
              public void accept(Visitor visitor) {
                  visitor.visitString(this);
              }

          }
          測試類:
          public class Test {
              public static void main(String[] args) {
                  Visitor visitor = new ConcreteVisitor();
                  Visitable se = new StringElement("abc");
                  se.accept(visitor);
                  
                  Visitable fe = new FloatElement(new Float(1.5));
                  fe.accept(visitor);
                  System.out.println("===========");
                  List<Visitable> result = new ArrayList<Visitable>();
                  result.add(new StringElement("abc"));
                  result.add(new StringElement("abc"));
                  result.add(new StringElement("abc"));
                  result.add(new FloatElement(new Float(1.5)));
                  result.add(new FloatElement(new Float(1.5)));
                  result.add(new FloatElement(new Float(1.5)));
                  visitor.visitCollection(result);
                  Visitable is = new IntElement(2);
                  is.accept(visitor);
              }

          }

          posted on 2013-04-18 16:20 楊軍威 閱讀(197) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆昌县| 桂阳县| 长岭县| 潼南县| 建阳市| 怀远县| 疏附县| 钟祥市| 定边县| 延庆县| 广丰县| 平邑县| 田东县| 航空| 晋州市| 开原市| 南汇区| 兴和县| 霍林郭勒市| 察隅县| 嘉鱼县| 石门县| 伊春市| 八宿县| 兰考县| 大城县| 镇安县| 五莲县| 霸州市| 莱西市| 栾城县| 云和县| 定结县| 三明市| 安仁县| 舞阳县| 蓬安县| 贡山| 偏关县| 和龙市| 孝昌县|