日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

《研磨设计模式》chap25 访问者模式Visitor(1)模式介绍

發布時間:2025/3/21 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《研磨设计模式》chap25 访问者模式Visitor(1)模式介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景:給用戶做服務,分為個人用戶、企業用戶,服務不斷地變。

1. 正常編碼(不使用模式)

public abstract class Customer {private String customerId; //客戶編號 private String name;//客戶名稱 //客戶提出服務請求的方法 public abstract void serviceRequest(); }public class EnterpriseCustomer extends Customer{ private String linkman; //聯系人 private String linkTelephone;//聯系電話 private String registerAddress;//企業注冊地址public void serviceRequest(){//企業客戶提出的具體服務請求System.out.println(this.getName()+"企業提出服務請求");} }public class PersonalCustomer extends Customer{ private String telephone;// 聯系電話 private int age;//年齡public void serviceRequest(){//個人客戶提出的具體服務請求System.out.println("客戶"+this.getName()+"提出服務請求");}

2. 模式介紹

public abstract class Element {//接受訪問者的訪問 public abstract void accept(Visitor visitor); }//訪問者接口 public interface Visitor {//訪問元素A,相當于給元素A添加訪問者的功能 public void visitConcreteElementA(ConcreteElementA elementA);//訪問元素B,相當于給元素B添加訪問者的功能 public void visitConcreteElementB(ConcreteElementB elementB); }//具體的訪問者實現 public class ConcreteVisitor1 implements Visitor {public void visitConcreteElementA(ConcreteElementA element) {//把去訪問ConcreteElementA時,需要執行的功能實現在這里//可能需要訪問元素已有的功能,比如:element.opertionA();}public void visitConcreteElementB(ConcreteElementB element) { element.opertionB();} }//具體元素的實現對象 public class ConcreteElementA extends Element {public void accept(Visitor visitor) {//回調訪問者對象的相應方法visitor.visitConcreteElementA(this);}// 示例方法,表示元素已有的功能實現 public void opertionA(){//已有的功能實現} }//對象結構,通常在這里對元素對象進行遍歷,讓訪問者能訪問到所有的元素 public class ObjectStructure {//表示對象結構,可以是一個組合結構或是集合 private Collection<Element> col = new ArrayList<Element>();//提供給客戶端操作的高層接口public void handleRequest(Visitor visitor){//循環對象結構中的元素,接受訪問for(Element ele : col){ele.accept(visitor);}}//組建對象結構,向對象結構中添加元素。 public void addElement(Element ele){this.col.add(ele);} }public static void main(String[] args) {//創建ObjectStructureObjectStructure os = new ObjectStructure();//創建要加入對象結構的元素Element eleA = new ConcreteElementA();Element eleB = new ConcreteElementB();//把元素加入對象結構os.addElement(eleA);os.addElement(eleB);//創建訪問者Visitor visitor = new ConcreteVisitor1();//調用業務處理的方法os.handleRequest(visitor); }

總結

以上是生活随笔為你收集整理的《研磨设计模式》chap25 访问者模式Visitor(1)模式介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。