设计模式 go语言实践-5 外观模式

go语言挺简洁的,学习设计模式够用了,外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。感觉和工厂模式有一定相似之处,但这个主要是为了隐藏系统复杂性。

工具:

// test project main.go
package main

import (
	"fmt"
)

type Shape interface {
	draw()
}
type Rectangle struct {
}

type Circle struct {
}

func (r *Rectangle) draw() {
	fmt.Println("Rectangle::draw()")
}

func (r *Circle) draw() {
	fmt.Println("Circle::draw()")
}

type ShapeMaker struct {
	circle    Circle
	rectangle Rectangle
}

func Draw(shape Shape) {
	shape.draw()
}
func (shapeMaker *ShapeMaker) drawCircle() {
	Draw(&shapeMaker.circle)
}
func (shapeMaker *ShapeMaker) drawRectangle() {
	Draw(&shapeMaker.rectangle)
}
func main() {
	var s ShapeMaker
	s.drawCircle()
	s.drawRectangle()

}

  运行结果:

Circle::draw()

Rectangle::draw()

posted @ 2020-03-19 12:05  zhaogaojian  阅读(291)  评论(0编辑  收藏  举报