designpattern

package
v0.0.0-...-91bc505 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 19, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewCities

func NewCities(name string) *cities

NewCities 创建一个市

func NewEpidemicProtectionDecorator

func NewEpidemicProtectionDecorator(station Station) *epidemicProtectionDecorator

func NewHealthyPancakeBuilder

func NewHealthyPancakeBuilder() *healthyPancakeBuilder

func NewNormalPancakeBuilder

func NewNormalPancakeBuilder() *normalPancakeBuilder

func NewSecurityCheckDecorator

func NewSecurityCheckDecorator(station Station) *securityCheckDecorator

func NewSubwayStation

func NewSubwayStation(name string) *subwayStation

NewSubwayStation 创建指定站名地铁站

func NewTown

func NewTown(name string, population int, gdp float64) *town

NewTown 创建区镇,根据名称、人口、GDP

Types

type Button

type Button interface {
	Render()
}

产品接口

type Circle

type Circle struct {
	// contains filtered or unexported fields
}

具体抽象:不同的形状

func (*Circle) Draw

func (c *Circle) Draw()

type Config

type Config struct {
	DatabaseURL string
	APIKey      string
}

func GetConfigInstance

func GetConfigInstance() *Config

type CreditCard

type CreditCard struct{}

被适配的类:具有不同接口的支付方式

func (*CreditCard) Charge

func (c *CreditCard) Charge(amount float64) string

type CreditCardAdapter

type CreditCardAdapter struct {
	CreditCard *CreditCard
}

适配器:将不同的支付方式适配为统一的 Payment 接口

func (*CreditCardAdapter) ProcessPayment

func (a *CreditCardAdapter) ProcessPayment(amount float64) string

type DatabaseLogger

type DatabaseLogger struct{}

func (*DatabaseLogger) Log

func (l *DatabaseLogger) Log(message string)

type DatabaseLoggerFactory

type DatabaseLoggerFactory struct{}

func (*DatabaseLoggerFactory) CreateLogger

func (f *DatabaseLoggerFactory) CreateLogger() Logger

type Directory

type Directory struct {
	// contains filtered or unexported fields
}

复合节点:文件夹

func (*Directory) Add

func (d *Directory) Add(element FileSystemElement)

func (*Directory) GetName

func (d *Directory) GetName() string

func (*Directory) Print

func (d *Directory) Print(indent string)

type File

type File struct {
	// contains filtered or unexported fields
}

叶子节点:文件

func (*File) GetName

func (f *File) GetName() string

func (*File) Print

func (f *File) Print(indent string)

type FileLogger

type FileLogger struct{}

func (*FileLogger) Log

func (l *FileLogger) Log(message string)

type FileLoggerFactory

type FileLoggerFactory struct{}

func (*FileLoggerFactory) CreateLogger

func (f *FileLoggerFactory) CreateLogger() Logger

type FileSystemElement

type FileSystemElement interface {
	GetName() string
	Print(indent string)
}

组件接口:表示文件系统中的元素

type GUIFactory

type GUIFactory interface {
	CreateButton() Button
	CreateMouse() Mouse
}

type HTMLReportBuilder

type HTMLReportBuilder struct {
	// contains filtered or unexported fields
}

func (*HTMLReportBuilder) Build

func (b *HTMLReportBuilder) Build() Report

func (*HTMLReportBuilder) SetBody

func (b *HTMLReportBuilder) SetBody(body string) ReportBuilder

func (*HTMLReportBuilder) SetFooter

func (b *HTMLReportBuilder) SetFooter(footer string) ReportBuilder

func (*HTMLReportBuilder) SetTitle

func (b *HTMLReportBuilder) SetTitle(title string) ReportBuilder

type Logger

type Logger interface {
	Log(message string)
}

type LoggerFactory

type LoggerFactory interface {
	CreateLogger() Logger
}

type MacOSButton

type MacOSButton struct{}

func (*MacOSButton) Render

func (b *MacOSButton) Render()

type MacOSFactory

type MacOSFactory struct{}

func (*MacOSFactory) CreateButton

func (f *MacOSFactory) CreateButton() Button

func (*MacOSFactory) CreateMouse

func (f *MacOSFactory) CreateMouse() Mouse

type MacOSMouse

type MacOSMouse struct{}

func (*MacOSMouse) Click

func (b *MacOSMouse) Click()

type Map

type Map struct {
	Data *MapData
}

func (*Map) Clone

func (m *Map) Clone() MapPrototype

type MapData

type MapData struct {
	TerrainData  []byte
	RoadData     []byte
	BuildingData []byte
}

func NewMapData

func NewMapData() *MapData

type MapPrototype

type MapPrototype interface {
	Clone() MapPrototype
}

type Mouse

type Mouse interface {
	Click()
}

type OpenGLRenderer

type OpenGLRenderer struct{}

具体实现:不同的渲染引擎

func (*OpenGLRenderer) RenderShape

func (r *OpenGLRenderer) RenderShape(shape string)

type PDFReportBuilder

type PDFReportBuilder struct {
	// contains filtered or unexported fields
}

func (*PDFReportBuilder) Build

func (b *PDFReportBuilder) Build() Report

func (*PDFReportBuilder) SetBody

func (b *PDFReportBuilder) SetBody(body string) ReportBuilder

func (*PDFReportBuilder) SetFooter

func (b *PDFReportBuilder) SetFooter(footer string) ReportBuilder

func (*PDFReportBuilder) SetTitle

func (b *PDFReportBuilder) SetTitle(title string) ReportBuilder

type Pancake

type Pancake struct {
	// contains filtered or unexported fields
}

Pancake 煎饼

type PancakeBuilder

type PancakeBuilder interface {
	// PutPaste 放面糊
	PutPaste(quantity Quantity)
	// PutEgg 放鸡蛋
	PutEgg(num int)
	// PutWafer 放薄脆
	PutWafer()
	// PutFlavour 放调料 Coriander香菜,Shallot葱 Sauce酱
	PutFlavour(hasCoriander, hasShallot, hasSauce bool)
	// Build 摊煎饼
	Build() *Pancake
}

type PancakeCook

type PancakeCook struct {
	// contains filtered or unexported fields
}

PancakeCook 摊煎饼师傅

func NewPancakeCook

func NewPancakeCook(builder PancakeBuilder) *PancakeCook

func (*PancakeCook) MakeBigPancake

func (p *PancakeCook) MakeBigPancake() *Pancake

MakeBigPancake 摊一个巨无霸煎饼

func (*PancakeCook) MakePancake

func (p *PancakeCook) MakePancake() *Pancake

MakePancake 摊一个一般煎饼

func (*PancakeCook) MakePancakeForFlavour

func (p *PancakeCook) MakePancakeForFlavour(hasCoriander, hasShallot, hasSauce bool) *Pancake

MakePancakeForFlavour 摊一个自选调料霸煎饼

func (*PancakeCook) SetPancakeBuilder

func (p *PancakeCook) SetPancakeBuilder(builder PancakeBuilder)

SetPancakeBuilder 重新设置煎饼构造器

type PayPal

type PayPal struct{}

func (*PayPal) ExecutePayment

func (p *PayPal) ExecutePayment(amount float64) string

type PayPalAdapter

type PayPalAdapter struct {
	PayPal *PayPal
}

func (*PayPalAdapter) ProcessPayment

func (a *PayPalAdapter) ProcessPayment(amount float64) string

type Payment

type Payment interface {
	ProcessPayment(amount float64) string
}

目标接口:统一的支付接口

type Quantity

type Quantity int

Quantity 分量

const (
	Small  Quantity = 1
	Middle Quantity = 5
	Large  Quantity = 10
)

type Rectangle

type Rectangle struct {
	// contains filtered or unexported fields
}

func (*Rectangle) Draw

func (r *Rectangle) Draw()

type Region

type Region interface {
	Name() string    // 名称
	Population() int //人口
	GDP() float64    // gdp
}

Region 行政区,作为组合模式component接口

type Renderer

type Renderer interface {
	RenderShape(shape string)
}

实现部分:渲染引擎接口

type Report

type Report struct {
	Title  string
	Body   string
	Footer string
}

type ReportBuilder

type ReportBuilder interface {
	SetTitle(title string) ReportBuilder
	SetBody(body string) ReportBuilder
	SetFooter(footer string) ReportBuilder
	Build() Report
}

type Shape

type Shape interface {
	Draw()
}

抽象部分:形状接口

type Station

type Station interface {
	Enter() string // 进站
}

Station 车站,修饰器模式统一接口

type VulkanRenderer

type VulkanRenderer struct{}

func (*VulkanRenderer) RenderShape

func (r *VulkanRenderer) RenderShape(shape string)

type WindowsButton

type WindowsButton struct{}

具体产品

func (*WindowsButton) Render

func (b *WindowsButton) Render()

type WindowsFactory

type WindowsFactory struct{}

func (*WindowsFactory) CreateButton

func (f *WindowsFactory) CreateButton() Button

func (*WindowsFactory) CreateMouse

func (f *WindowsFactory) CreateMouse() Mouse

type WindowsMouse

type WindowsMouse struct{}

func (*WindowsMouse) Click

func (b *WindowsMouse) Click()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL