visitor模式表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。
類圖:
• 乙個物件結構包含很多類物件,它們有不同的介面,而你想對這些物件實施一些依賴於其具體類的操作。
• 需要對乙個物件結構中的物件進行很多不同的並且不相關的操作,而你想避免讓這些操作「汙染」這些物件的類。visitor使得你可以將相關的操作集中起來定義在乙個類中。
• 定義物件結構的類很少改變,但經常需要在此結構上定義新的操作。
場景:乙個方法從不同的類中聚集資訊,把聚集工作搬移到乙個能夠訪問每個類以便聚集資訊的visitor中。
示例: 購物車裡有不同的產品(書,水果), 購物車類提供乙個功能就是分別統計不同產品的費用,並列印出資訊,但書和水果類沒有統一的介面統計費用和列印資訊。
public inte***ce item
public class book implements item
public int getprice()
public string getisbnnum()
public string getname()
public void accept(visitor visitor)
}
public class fruit implements item
public int getpriceperkg()
public int getweight()
public string getname()
public void accept(visitor visitor)
}
public inte***ce visitor
public class shoppingcartvisitor implements visitor else
}public void visit(fruit fruit)
public string getinfo()
}
public class shoppingcart
system.out.println(visitor.getinfo()); //從訪問者獲取聚集資訊}}
測試**
public class shoppingcarttest
}//輸出
book isbn::1234 cost = 38
book isbn::5678 cost = 95
banana cost = 20
Java設計模式之訪問者模式 Visitor 實踐
訪問者模式定義 主要將資料結構與資料操作分離。需要處理穩定的資料結構和易變的操作耦合問題,此時可以使用訪問者模式。以下 演示訪問者模式簡單的實際運用 定義乙個介面gohome package com.ldl.cn.visitormodel public inte ce gohome定義乙個類goho...
設計模式 訪問者模式
訪問者模式是一種資料操作與資料結構分離的設計模式,訪問者模式的基本想法是,軟體系統中擁有乙個由許多物件構成的 比較穩定的物件結構,這些物件的類都擁有乙個accept方法用來接受訪問者物件的訪問。訪問者是乙個介面,它擁有乙個visit方法,這個方法對訪問到的物件結構中不同型別的元素作出不同的處理。在物...
設計模式 訪問者模式
訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。例子 男人和女人在不同的狀態下會有不同反應,採用訪問者模式,可以增加狀態很方便 抽象狀態類 class action 男人反應 virtual void getwom...