訪問者模式:對於儲存在乙個集合中的物件,他們可能具有不同的型別(即使有乙個公共的介面),對於該集合中的物件,可以接受一類稱為訪問者的物件來訪問,不同的訪問方式也有所不同。
定義:表示乙個作用於某物件結構中的各元素的操作,它使我們可以在不改變元素的類的前提下定義作用於這些元素的新操作。
visitor:表示訪問者的抽象類或者介面,用於定義每個元素中訪問的行為,引數就是可以訪問的元素,一般方法數量與元素數量一致。
concretevisitor:表示具體的訪問者,繼承visitor並對其宣告的抽象方法提供具體的實現。
element:表示元素的抽象類或介面,即訪問者實際要訪問的物件,element角色需要對訪問者提供乙個開發的介面。為了讓每乙個元素都可以被訪問者訪問。
conreteelement:表示具體的元素類,提供接受訪問方法的具體實現,一般是使用訪問者提供的訪問該元素類的方法。
objectstructure:表示定義結構物件,物件結構是乙個抽象表述,管理元素集合並可以迭代這些元素提供給訪問者訪問。
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 訪問者的介面
* @createdate 2019/3/3
*/public inte***ce computerpartvisitor
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 具體的訪問者
* @createdate 2019/3/3
*/public class computerpartdisplayvisitor implements computerpartvisitor
@override
public void visit(mouse mouse)
@override
public void visit(keyboard keyboard)
@override
public void visit(monitor monitor)
}
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 元素介面(element)
* @createdate 2019/3/3
*/public inte***ce computerpart
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 具體的元素類
* @createdate 2019/3/3
*/public class computer implements computerpart ;
}@override
public void accept(computerpartvisitor computerpartvisitor)
computerpartvisitor.visit(this);
}}
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 具體的元素類
* @createdate 2019/3/3
*/public class keyboard implements computerpart
}
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 具體的元素類
* @createdate 2019/3/3
*/public class monitor implements computerpart
}
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 具體的元素類
* @createdate 2019/3/3
*/public class mouse implements computerpart
}
package com.kevin.行為型模式.訪問者模式.visitor;
/** * @author kevin
* @version 1.0
* @description 測試訪問者模式
* @createdate 2019/1/18
*/public class test
}
xml文件解析器設計
編譯器的設計
複雜集合物件的處理
Java的23種設計模式
設計模式分為三大類 建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式 狀態模...
Java23種設計模式
定義 設計模式 design pattern 是一套反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。單例模式,特點 全域性只有乙個例項。定義 單例模式,也叫單子模式,是一種常用的軟體設計模式。在應用這個模式的時候,單例物件的類必須...
Java23種設計模式
建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模 式 狀態模式 訪問者模式 中...