1. 程式人生 > >Java設計模式(23)——行為模式之訪問者模式

Java設計模式(23)——行為模式之訪問者模式

font string 概念 str ron 直接 integer span das

一、概述

  概念

  技術分享

  作用於某個對象群中各個對象的操作。它可以使你在不改變這些對象本身的情況下,定義作用於這些對象的新操作。

  引入

  試想這樣一個場景,在一個Collection中放入了一大堆的各種對象的引用,取出時卻需要根據這些對象的不同具體類型執行不同操作,那我們有如下方案:

  public void show(Collection c) {
        Iterator it = c.iterator();
        while (it.hasNext()) {
            Object o = it.next();
            
if (o instanceof Integer) { // Integer對應的操作 } else if (o instanceof String) { // String對應的操作 } else if (o instanceof Collection) { // Collection對應的操作 } else { // 省略若幹個else if } } }

  就不分析說這段代碼到底有什麽問題了,我們直接引入解決辦法:訪問者模式——把數據結構和數據結構之上的操作解耦

  UML簡圖

  技術分享

  

Java設計模式(23)——行為模式之訪問者模式