杞绘澗浣跨敤Golang Facade浼樺寲椤圭洰浠g爜缁撴瀯
鍦℅olang涓紝Facade妯″紡鍙互鐢ㄦ潵绠€鍖栦唬鐮佺粨鏋勫苟鎻愪緵涓€涓粺涓€鐨勬帴鍙o紝浠ヤ究浜庡澶栭儴绯荤粺鐨勮闂€備笅闈㈡槸涓€涓娇鐢‵acade浼樺寲椤圭洰浠g爜缁撴瀯鐨勭ず渚嬶細
- 棣栧厛锛屽垱寤轰竴涓閮ㄧ郴缁熺殑鍖咃紝渚嬪
external銆傚湪杩欎釜鍖呬腑锛屽畾涔夊澶栭儴绯荤粺鐨勮闂柟娉曘€?/li>
package external
type SystemA struct{}
func (s *SystemA) MethodA() {
// 澶栭儴绯荤粺A鐨勬柟娉旳鐨勫疄鐜?/span>
}
type SystemB struct{}
func (s *SystemB) MethodB() {
// 澶栭儴绯荤粺B鐨勬柟娉旴鐨勫疄鐜?/span>
}
- 鍒涘缓涓€涓狥acade鍖咃紝渚嬪
facade銆傚湪杩欎釜鍖呬腑锛屽畾涔変竴涓粺涓€鐨勬帴鍙o紝骞跺湪鎺ュ彛涓皟鐢ㄥ閮ㄧ郴缁熺殑鏂规硶銆?/li>
package facade
import "external"
type Facade struct {
systemA *external.SystemA
systemB *external.SystemB
}
func NewFacade() *Facade {
return &Facade{
systemA: &external.SystemA{},
systemB: &external.SystemB{},
}
}
func (f *Facade) MethodA() {
f.systemA.MethodA()
}
func (f *Facade) MethodB() {
f.systemB.MethodB()
}
- 鍦ㄩ」鐩殑鍏朵粬鍦版柟锛岄€氳繃鍒涘缓Facade瀵硅薄鏉ヨ闂閮ㄧ郴缁熴€?/li>
package main
import "facade"
func main() {
facade := facade.NewFacade()
// 閫氳繃Facade璁块棶澶栭儴绯荤粺
facade.MethodA()
facade.MethodB()
}
閫氳繃浣跨敤Facade妯″紡锛屾垜浠彲浠ュ皢瀵瑰閮ㄧ郴缁熺殑璁块棶灏佽鍦ㄤ竴涓粺涓€鐨勬帴鍙d腑锛屼粠鑰岀畝鍖栦簡浠g爜缁撴瀯骞舵彁楂樹簡浠g爜鐨勫彲缁存姢鎬с€傛澶栵紝Facade杩樺彲浠ラ殣钘忓閮ㄧ郴缁熺殑鍏蜂綋瀹炵幇缁嗚妭锛屼娇寰楀叾浠栭儴鍒嗙殑浠g爜鏇村姞鐙珛鍜屽彲娴嬭瘯銆?/p>
相关问答