GO设计模式11外观模式
Posted XY丶YX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO设计模式11外观模式相关的知识,希望对你有一定的参考价值。
package main
import (
"fmt"
)
//Shape 模型接口
type Shape interface {
Draw()
}
//Circle 圆形类
type Circle struct{}
//NewCircle 实例化圆形类
func NewCircle() *Circle {
return &Circle{}
}
//Draw 实现Shape接口
func (c *Circle) Draw() {
fmt.Println("Circle Draw method.")
}
//Rectangle 矩形类
type Rectangle struct{}
//NewRectangle 实例化圆形类
func NewRectangle() *Rectangle {
return &Rectangle{}
}
//Draw 实现Shape接口
func (c *Rectangle) Draw() {
fmt.Println("Rectangle Draw method.")
}
//Square 正方形类
type Square struct{}
//NewSquare 实例化圆形类
func NewSquare() *Square {
return &Square{}
}
//Draw 实现Shape接口
func (c *Square) Draw() {
fmt.Println("Square Draw method.")
}
//-------------------------------------------------------------------------------
//ShapeMaker 外观类
type ShapeMaker struct {
circle Circle
square Square
rectangle Rectangle
}
//NewShapeMaker 实例化外观类
func NewShapeMaker() *ShapeMaker {
return &ShapeMaker{
circle: Circle{},
rectangle: Rectangle{},
square: Square{},
}
}
//DrawCircle 调用circle的Draw方法
func (shapeMk *ShapeMaker) DrawCircle() {
shapeMk.circle.Draw()
}
//DrawRectangle 调用rectangle的Draw方法
func (shapeMk *ShapeMaker) DrawRectangle() {
shapeMk.rectangle.Draw()
}
//DrawSquare 条用square的Draw方法
func (shapeMk *ShapeMaker) DrawSquare() {
shapeMk.square.Draw()
}
func main() {
fmt.Println("hello")
shapeMaker := NewShapeMaker()
shapeMaker.circle.Draw()
shapeMaker.rectangle.Draw()
shapeMaker.square.Draw()
}
以上是关于GO设计模式11外观模式的主要内容,如果未能解决你的问题,请参考以下文章