随笔分类 -  go 设计模式

摘要:使用闭包实现选项模式: package main import "fmt" //先定义一个结构体 type Stu struct { Name string Age int Addr string } var ( //设置Stu属性的默认值 DefaultStu = &Stu{ Name: "som 阅读全文
posted @ 2020-04-09 16:47 醉深梦始 阅读(211) 评论(0) 推荐(0)
摘要:装饰模式使用对象组合的方式动态改变或增加对象行为。 Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式。 使用匿名组合,在装饰器中不必显式定义转调原对象方法。 package decorator import ( _ "fmt" ) type BaseCal interface{ Cal() 阅读全文
posted @ 2020-04-04 15:45 醉深梦始 阅读(273) 评论(0) 推荐(0)
摘要:桥接模式分离抽象部分和实现部分。使得两部分独立扩展。 桥接模式类似于策略模式,区别在于策略模式封装一系列算法使得算法可以互相替换。 策略模式使抽象部分和实现部分分离,可以独立变化。 package bridge import( "fmt" ) type Road interface{ //选择路线 阅读全文
posted @ 2020-04-04 14:37 醉深梦始 阅读(392) 评论(0) 推荐(0)
摘要:适配器:就是一个类的实例通过适配器功能可以实现一个它没有的功能 package adapt import( "fmt" ) type ChargeHeadB struct{//B的充电头 } func (this *ChargeHeadB)ChargeB(){ fmt.Println("Head B 阅读全文
posted @ 2020-04-03 21:34 醉深梦始 阅读(534) 评论(0) 推荐(0)
摘要:造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同, 阅读全文
posted @ 2020-04-03 19:10 醉深梦始 阅读(658) 评论(0) 推荐(0)
摘要:Go单例模式 package main import( "fmt" "sync" "time" ) type Singleton struct {} var singleton *Singleton //只会创建一次 var once sync.Once func GetInstance() *Si 阅读全文
posted @ 2020-04-03 18:10 醉深梦始 阅读(191) 评论(0) 推荐(0)
摘要:抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。 实现举例: package absfactory import( "fmt" ) //手机制作接口 type Se 阅读全文
posted @ 2020-04-03 17:03 醉深梦始 阅读(607) 评论(0) 推荐(0)
摘要:基于简单的工厂模式进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成。不同的子工厂负责创建不同的产品(实例) package factory import( "fmt" ) //玩具工厂 type ToyFactory interface{ C 阅读全文
posted @ 2020-04-03 15:25 醉深梦始 阅读(1700) 评论(0) 推荐(0)
摘要:简单的工厂模式,又称为静态工厂方法,它属于类创建型模式。在简单工厂模式中,可以根据参数创建不同的实例。简单工厂模式专门定义一个类来创建其他类的实例。 在以下情况下可以使用简单工厂模式: 工厂类负责创建的对象比较少:由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。 客户端只知道传入工厂类的参 阅读全文
posted @ 2020-04-03 14:10 醉深梦始 阅读(415) 评论(0) 推荐(0)