代码改变世界

随笔分类 -  设计模式(golang)

模板方法模式

2015-07-08 09:02 by foolbread-老陈, 153 阅读, 收藏,
摘要: 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。——《HEAD FIRST 设计模式》 我的golang代码: 1 package template 2 3 import ( 4 "fmt" ... 阅读全文

外观模式

2015-04-29 00:12 by foolbread-老陈, 145 阅读, 收藏,
摘要: 外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。——《HEAD FIRST 设计模式》 我的golang代码: package facade import "fmt" type PopcornPopper struct { } func (f *PopcornPopper) On() { fmt.Println("p... 阅读全文

适配器模式

2015-04-28 22:26 by foolbread-老陈, 138 阅读, 收藏,
摘要: 适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。——《HEAD FIRST 设计模式》 我的golang代码: package adapter import "fmt" type Duck interface { Quack() Fly() } type Turkey interface { Gob... 阅读全文

命令模式

2015-04-28 12:00 by foolbread-老陈, 132 阅读, 收藏,
摘要: 命令模式:将请求封装成对象,这可以让你使用不同的请求,队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。——《HEAD FIRST 设计模式》 我的golang代码: package command import ( "fmt" ) const slotnums = 7 type Command interface { execute() } //... 阅读全文

单例模式

2015-04-27 11:42 by foolbread-老陈, 104 阅读, 收藏,
摘要: 单例模式:确保一个类只有一个实例,并提供全局访问点。——《HEAD FIRST 设计模式》 我的golang代码: package singleton import ( "fmt" ) type Singleton interface { PrintSome() } type singleone struct { v int } var g_singleon... 阅读全文

工厂模式

2015-04-24 11:50 by foolbread-老陈, 157 阅读, 收藏,
摘要: 工厂模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。——《HEAD FIRST 设计模式》 我的golang代码: package factory import ( "fmt" ) type PizzaStore interface { createPizza(t string) Pizza OrderP... 阅读全文

装饰者模式

2015-04-23 15:21 by foolbread-老陈, 126 阅读, 收藏,
摘要: 装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。——《HEAD FIRST 设计模式》 我的golang代码: package decorator ////////////////////////////////// type Beverage interface { GetDescription() string Cost() in... 阅读全文

观察者模式

2015-04-16 23:15 by foolbread-老陈, 155 阅读, 收藏,
摘要: 观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。——《HEAD FIRST 设计模式》 我的golang代码: package observer import ( "container/list" "fmt" ) type Subject interface { RegisterObserver... 阅读全文

策略模式

2015-04-16 23:11 by foolbread-老陈, 139 阅读, 收藏,
摘要: 策略模式:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。——《HEAD FIRST 设计模式》 我的golang代码: package strategy import ( "fmt" ) ///////////////////////////////////////// type FlyBehavior interface {... 阅读全文