<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      24.12.19

      實驗 25:訪問者模式

      本次實驗屬于模仿型實驗,通過本次實驗學生將掌握以下內容:

      1、理解訪問者模式的動機,掌握該模式的結構;

      2、能夠利用訪問者模式法解決實際問題。

       

      [實驗任務一]:打包員

      在我們課堂上的“購物車”的例子中,增加一個新的訪問者:打包員,負責對購物車中貨物裝包。

      實驗要求:

      1.  畫出對應的類圖;

      2.  提交源代碼;

      3. 注意編程規范。

       

      1. 類圖:

       

      1. 源代碼

      public interface Product {

          void accept(Visitor visitor);

      }

      public class Apple implements Product {

          public void accept(Visitor visitor) {

              visitor.visit(this);

          }

      }

       

      public class Book implements Product {

          public void accept(Visitor visitor) {

              visitor.visit(this);

          }

      }

      import java.util.ArrayList;

      import java.util.Iterator;

      import java.util.List;

       

      public class BuyBasket {

          private List<Product> list = new ArrayList<>();

       

          public void accept(Visitor visitor) {

              Iterator<Product> i = list.iterator();

              while (i.hasNext()) {

                  i.next().accept(visitor);

              }

          }

       

          public void addProduct(Product product) {

              list.add(product);

          }

       

          public void removeProduct(Product product) {

              list.remove(product);

          }

      }

      public abstract class Visitor {

          protected String name;

       

          public void setName(String name) {

              this.name = name;

          }

       

          public abstract void visit(Apple apple);

       

          public abstract void visit(Book book);

      }

      public class Saler extends Visitor {

          public void visit(Apple apple) {

              System.out.println("收銀員 " + name + " 給蘋果過秤,然后計算其價格。");

          }

       

          public void visit(Book book) {

              System.out.println("收銀員 " + name + " 直接計算書的價格。");

          }

      }

      public class Customer extends Visitor {

          public void visit(Apple apple) {

              System.out.println("顧客 " + name + " 選蘋果。");

          }

       

          public void visit(Book book) {

              System.out.println("顧客 " + name + " 買書。");

          }

      }

      public class Packer extends Visitor {

          public void visit(Apple apple) {

              System.out.println("打包員 " + name + " 將蘋果裝入保護袋。");

          }

       

          public void visit(Book book) {

              System.out.println("打包員 " + name + " 將書包裝入紙箱。");

          }

      }

      public class XMLUtil {

          // 該方法用于從 XML 配置文件中提取具體類的類名,并返回一個實例對象

          public static Object getBean() {

              try {

                  // 創建文檔對象

                  DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();

                  DocumentBuilder builder = dFactory.newDocumentBuilder();

                  Document doc;

                  doc = builder.parse(new File("config.xml"));

       

                  // 獲取包含類名的文本節點

                  NodeList nl = doc.getElementsByTagName("className");

                  Node classNode = nl.item(0).getFirstChild();

                  String cName = classNode.getNodeValue();

       

                  // 通過類名生成實例對象并將其返回

                  Class c = Class.forName(cName);

                  Object obj = c.newInstance();

                  return obj;

              } catch (Exception e) {

                  e.printStackTrace();

                  return null;

              }

          }

      }

      public class Client {

          public static void main(String[] args) {

              // 創建產品

              Product b1 = new Book();

              Product b2 = new Book();

              Product a1 = new Apple();

       

              // 創建購物籃

              BuyBasket basket = new BuyBasket();

              basket.addProduct(b1);

              basket.addProduct(b2);

              basket.addProduct(a1);

       

              // 動態獲取訪問者

              Visitor visitor = (Visitor) XMLUtil.getBean();

              visitor.setName("李四");

       

              // 訪問購物籃中的商品

              basket.accept(visitor);

          }

      }

      posted on 2024-12-19 21:02  Daniel350  閱讀(6)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 日韩一区二区大尺度在线| 精品九九人人做人人爱| 欧美国产日韩久久mv| 免费无码AV一区二区波多野结衣| 国产做无码视频在线观看浪潮| 欧美做受视频播放| 18禁极品一区二区三区| 人摸人人人澡人人超碰97| 精品久久丝袜熟女一二三| 怡红院一区二区三区在线| 中文字幕人妻日韩精品| 亚洲无人区码一二三四区| 国产三级精品片| 亚洲欧美日韩在线不卡| 国产精品多p对白交换绿帽| 赤壁市| 蜜臀91精品国产高清在线| 国产精品自拍午夜福利| 凤凰县| brazzers欧美巨大| 亚洲VA欧美VA国产综合| 亚洲精品动漫免费二区| 毛片网站在线观看| 伊人热热久久原色播放WWW| 亚洲精品男男一区二区| 丰满妇女强制高潮18xxxx| 亚洲国产欧美在线人成| 国产精品福利午夜久久香蕉| 亚洲人成精品久久久久| 亚洲人成电影网站 久久影视| 一本色道久久加勒比综合| 理论片午午伦夜理片久久| 羞羞影院午夜男女爽爽免费视频 | 精品国产av无码一区二区三区 | 高清无码爆乳潮喷在线观看| 欧美极品色午夜在线视频| 闻喜县| 98日韩精品人妻一二区| 伊人久久精品无码麻豆一区| 亚洲中文久久久精品无码| 亚洲男人电影天堂无码|