中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

我是做裝修的怎么樣投資網(wǎng)站個人網(wǎng)站規(guī)劃書模板

我是做裝修的怎么樣投資網(wǎng)站,個人網(wǎng)站規(guī)劃書模板,淮安注冊公司,wordpress提交新字段到表目錄 二、訪問者模式概念代碼類圖實例一:名牌運動鞋專賣店銷售軟件實例二:計算機部件銷售軟優(yōu)缺點適用場合課程作業(yè) 二、訪問者模式 概念 對于系統(tǒng)中的某些對象,它們存儲在同一個集合中,具有不同的類型對于該集合中的對象&#…

目錄

  • 二、訪問者模式
    • 概念
    • 代碼
    • 類圖
    • 實例一:名牌運動鞋專賣店銷售軟件
    • 實例二:計算機部件銷售軟
    • 優(yōu)缺點
    • 適用場合
    • 課程作業(yè)

二、訪問者模式

概念

  1. 對于系統(tǒng)中的某些對象,它們存儲在同一個集合中,具有不同的類型
  2. 對于該集合中的對象,可以接受一類被稱為訪問者的對象來訪問
  3. 不同的訪問者其訪問方式有所不同

目的:
封裝一些施加于某種數(shù)據(jù)結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的數(shù)據(jù)結構可以保持不變

模式動機:
為不同類型的元素提供多種訪問操作方式,且可以在不修改原有系統(tǒng)的情況下增加新的操作方式

在這里插入圖片描述

缺點:將所有的稅率運算分布到不同的結點類使得系統(tǒng)不容易理解、維護與改變。
如果要增加一個新的功能,則要在很多結點類都寫入新的代碼,且要重新編譯所有的類。
當稅率變化時要修改每個結點上的calculateTax()代碼。
因此,該設計的可擴展性和可維護性都不好。

解決方案:分離“Tax”類及其“calculateTax()”功能。
將所有結點的稅額計算方法都從原來的類中分離出來,放入另外一個獨立的類,叫做“TaxCalculation”類,設計圖如下。
設計思想:將原來分布于各結點中的計算稅額的方法都放在一個TaxCalculation類中。當要計算某個結點的稅額時,則調(diào)用TaxCalculation中某個相應的方法進行計算。
在這里插入圖片描述

代碼

訪問者模式(Visitor Pattern)是一種行為型設計模式,用于在不改變被訪問對象的結構的情況下,定義對其元素的新操作。訪問者模式將數(shù)據(jù)結構和對數(shù)據(jù)的操作分離開來,使得操作可以獨立變化而不影響數(shù)據(jù)結構。

在訪問者模式中,有以下幾個角色:

  1. 訪問者(Visitor):定義了對不同元素的訪問操作,每個具體訪問者都實現(xiàn)了對應的訪問方法,用于處理特定類型的元素。

  2. 具體訪問者(Concrete Visitor):實現(xiàn)了訪問者定義的訪問方法,具體處理不同類型元素的操作。

  3. 元素(Element):定義了接受訪問者訪問的接口,可以是抽象類或接口。

  4. 具體元素(Concrete Element):實現(xiàn)了元素定義的接口,具體元素可以有不同的類型,每個具體元素都可以接受訪問者的訪問。

  5. 對象結構(Object Structure):包含元素的集合,可以是一個容器,也可以是一個復雜的數(shù)據(jù)結構。

下面是一個簡單的訪問者模式的示例代碼,以展示其使用方式和實現(xiàn)原理:

// 定義元素接口
interface Element {void accept(Visitor visitor);
}// 具體元素A
class ConcreteElementA implements Element {public void accept(Visitor visitor) {visitor.visitConcreteElementA(this);}public String operationA() {return "具體元素A的操作";}
}// 具體元素B
class ConcreteElementB implements Element {public void accept(Visitor visitor) {visitor.visitConcreteElementB(this);}public String operationB() {return "具體元素B的操作";}
}// 定義訪問者接口
interface Visitor {void visitConcreteElementA(ConcreteElementA element);void visitConcreteElementB(ConcreteElementB element);
}// 具體訪問者
class ConcreteVisitor implements Visitor {public void visitConcreteElementA(ConcreteElementA element) {System.out.println("訪問者對" + element.operationA() + "的操作");}public void visitConcreteElementB(ConcreteElementB element) {System.out.println("訪問者對" + element.operationB() + "的操作");}
}// 對象結構
class ObjectStructure {private List<Element> elements = new ArrayList<>();public void addElement(Element element) {elements.add(element);}public void removeElement(Element element) {elements.remove(element);}public void accept(Visitor visitor) {for (Element element : elements) {element.accept(visitor);}}
}// 示例代碼的使用
public class VisitorPatternExample {public static void main(String[] args) {// 創(chuàng)建對象結構ObjectStructure objectStructure = new ObjectStructure();// 添加具體元素A和BobjectStructure.addElement(new ConcreteElementA());objectStructure.addElement(new ConcreteElementB());// 創(chuàng)建具體訪問者Visitor visitor = new ConcreteVisitor();// 對對象結構中的元素進行訪問操作objectStructure.accept(visitor);}
}

在上述示例代碼中,訪問者模式的核心在于訪問者(Visitor)和元素(Element)的交互。具體的訪問者定義了訪問不同元素的方法,而具體元素實現(xiàn)了接受訪問者訪問的接口。通過對象結構將元素組織起來,并調(diào)用訪問者的訪問方法,實現(xiàn)對元素的訪問操作。

訪問者模式的優(yōu)點包括:

  • 將數(shù)據(jù)結構和操作解耦,使得新增訪問操作變得容易。
  • 可以對元素的操作進行擴展,而不需要修改元素的結構。
  • 符合開閉原則,增加新的訪問者只需要新增具體訪問者,而不需要修改其他代碼。

然而,訪問者模式也有一些限制和注意事項:

  • 增加新的元素可能會導致訪問者接口的修改,從而需要修改所有的具體訪問者。
  • 對象結構中的元素類型較多時,會導致具體訪問者的訪問方法過多,增加了維護的復雜性。
  • 訪問者模式適用于數(shù)據(jù)結構相對穩(wěn)定,但經(jīng)常需要新增操作的場景,對于數(shù)據(jù)結構變化頻繁的場景,使用訪問者模式可能不合適。

總而言之,訪問者模式提供了一種靈活的方式來對數(shù)據(jù)結構的元素進行新的操作,同時也將訪問邏輯與元素的結構解耦,使得系統(tǒng)更加靈活、可擴展和易于維護。

類圖

訪問者模式:表示一個作用于某對象結構中的個元素的操作,它使我們可以在不改變各元素的類的前提下定義作用于這些元素的新操作。
訪問者模式是一種對象行為型模式

在這里插入圖片描述
首先分為兩個部分,一是元素類,而是訪問者類
先抽象再具體
在訪問者類里要有訪問元素的方法visitXXX(抽象元素父類做參數(shù))之類的
在元素類里要有接受訪問的方法,比如accept(抽象訪問者父類做參數(shù))等

在這里插入圖片描述

實例一:名牌運動鞋專賣店銷售軟件

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

在客戶程序中將直接創(chuàng)建運動鞋子類與訪問者子類的對象,然后直接調(diào)用運動鞋子類的 accept 方法。根據(jù)用戶輸入的所購買鞋的數(shù)量和單價來計算總價和獲得相應特點的功能分別由 Visitor 類的兩個子類 PriceVisitor 和 ShoeInfoVisitor 來實現(xiàn)。訪問者類圖如下。

實例二:計算機部件銷售軟

在這里插入圖片描述
在這里插入圖片描述

優(yōu)缺點

優(yōu)點:

  1. 使得增加新的訪問操作變得很容易。
  2. 將有關元素對象的訪問行為集中到一個訪問者對象中,而不是分散到一個個的元素類中。
  3. 可以跨過類的等級結構訪問屬于不同的等級結構的元素類
  4. 讓用戶能夠在不修改現(xiàn)有類層次結構的情況下,定義該類層次結構的操作。

缺點:

  1. 增加新的元素類很困難,違背了“開閉原則”的要求。
  2. 破壞封裝。訪問者模式要求訪問者對象訪問并調(diào)用每一個元素對象的操作,這意味著元素對象有時候必須暴露一些自己的內(nèi)部操作和內(nèi)部狀態(tài),否則無法供訪問者訪問。

適用場合

對象結構中對象對應的類很少改變,但經(jīng)常需要在此對象結構上定義新的操作

課程作業(yè)

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

http://m.risenshineclean.com/news/64454.html

相關文章:

  • 安陽市網(wǎng)站建設的公司企點qq
  • 企業(yè)如何進行網(wǎng)站建設產(chǎn)品網(wǎng)絡營銷方案
  • 在百度云上建設網(wǎng)站如何把品牌推廣出去
  • 廈門網(wǎng)站建設價google應用商店
  • 哪里有手機網(wǎng)站定制服務器手機怎么自己制作網(wǎng)頁
  • b2b網(wǎng)站黃頁怎么讓百度快速收錄網(wǎng)站
  • 如何建設阿里巴巴網(wǎng)站游戲推廣平臺
  • 青海省建設廳建管處網(wǎng)站排名點擊工具
  • 前端做網(wǎng)站使用的軟件工具信息流廣告是什么
  • 英文網(wǎng)站建設電話咨詢網(wǎng)頁做推廣
  • 沌口網(wǎng)站建設seo是什么品牌
  • 手機做網(wǎng)站用什么軟件深圳優(yōu)化公司哪家好
  • 網(wǎng)站功能定制優(yōu)化手機流暢度的軟件
  • 網(wǎng)站如何做搜狗搜索引擎百度下載安裝免費
  • 網(wǎng)站建設公司 南京谷歌seo優(yōu)化中文章
  • 河南省建筑一體化平臺管理系統(tǒng)seo技術經(jīng)理
  • php動態(tài)網(wǎng)站開發(fā)期末考試網(wǎng)絡營銷公司名字大全
  • 大渡口網(wǎng)站建設哪家好武漢網(wǎng)站優(yōu)化公司
  • 免費申請香港網(wǎng)站公司推廣咨詢
  • 吉林市網(wǎng)站制作廣州網(wǎng)站制作服務
  • 電商網(wǎng)站開發(fā)商營銷型網(wǎng)站重要特點是
  • 個人怎么注冊小微企業(yè)搜索引擎優(yōu)化面對哪些困境
  • 學校網(wǎng)站的英文奇葩網(wǎng)站100個
  • 網(wǎng)站模板設計開發(fā)站長工具四葉草
  • wordpress怎么上傳logo百度關鍵詞優(yōu)化工具
  • 石家莊專業(yè)建站公司網(wǎng)頁版百度云
  • 代理服務器地址seo搜索引擎優(yōu)化服務
  • 騰訊云做網(wǎng)站需要報備百度人工服務熱線24小時
  • 專業(yè)網(wǎng)站設計哪家好可以做產(chǎn)品推廣的軟件有哪些
  • 代銷網(wǎng)站源碼seo優(yōu)化技術是什么