// 商品介面
public
inte***ce
goods
class basketball implements goods
public
intgetprice()
@override
public
intaccept(visitor visitor)
}class fruit implements goods
public
intgetprice()
@override
public
intaccept(visitor visitor)
}
// 訪問者介面
public
inte***ce
visitor
class visitorimpl implements visitor
@override
public
intvisit(fruit fruit)
}
// 客戶端
public
class
client ;
visitor v = new visitorimpl();
int sum = 0;
// 計算商品總**
for(goods g : gs)
system.out.println("total: " + sum);
}}
訪問者模式將元素類中與元素類本身關係不大且易變的操作移到訪問者類中,使得元素類的職責更單一,同時若想改變操作邏輯,只需要改變訪問者即可 每日一記 設計模式 工廠模式
工廠模式屬於建立型模式,是非常常見的設計模式 工廠模式可分為簡單工廠 工廠方法 抽象工廠 簡單工廠由乙個工廠類根據傳入的參量決定建立出哪一種產品類的例項,雖然降低了客戶端對於產品類的依賴,但是所有的邏輯都集中在工廠類中,每當要增加一種新產品時就要修改工廠類的 違反了 開閉原則 擴充套件性不強。產品 ...
每日一記 設計模式 狀態模式
狀態介面 public inte ce state class concretestatea implements state override public void handle string param class concretestateb implements state overrid...
每日一記 設計模式 單例模式
先從最常見的單例模式開始寫起 簡潔而且執行緒安全,但是缺點是即使不呼叫getinstance 方法ins也會被初始化,造成一定的資源浪費 public class singleton public static singleton getinstance 為了避免餓漢式的浪費,可按照如下實現 pub...