什么是访问者模式? 访问者模式即访问数据结构并处理数据 示范代码(visitor.go) 元素接受不同访问者访问 package Visitor import "fmt" // 访问者 type Visitor interface { visit() } type UserVisitor s
什么是装饰者模式? 装饰者模式即保持装饰者和被装饰者的一致性 可以不断地为对象添加装饰 主要目的就是通过添加装饰物来增加类的功能 示范代码(decorator.go) 计算函数运行时间 package Decorator import ( "log" "math" "time" ) typ
什么是组合模式? 组合模式即使容器和内容具有一致性,从而构建递归结构 将容器和内容当做同一种对象对待 示范代码(composite.go) 系统文件目录 package Composite import "fmt" // 一致性结构 type Entry interface { getName
什么是策略模式? 策略模式即整体地替换算法 能够整体地替换算法,让我们轻松地以不同的算法去解决相一个问题 动态替换 示范代码(strategy.go) 猜拳游戏 package Strategy import ( "fmt" "math/rand" "time" ) const ( //
什么是抽象工厂模式? 抽象工厂模式即将关联零件组装成产品 将抽象零件组装成为抽象产品 示范代码(abstract_factory.go) 新建一个零食工厂 package Abstract_Factory import "fmt" // 创建一个工厂,生成饮料、零食 // 抽象产品 type
什么是建造者模式? 建造者模式即组装复杂的实例 时刻关注可替换性 示范代码(builder.go) package Builder // 建造者 type Builder interface { builderPart1() builderPart2() builderPart3() }
什么是原型模式? 原型模式即通过复制生成实例 当对象种类繁多,无法将它们整合到一个类时或难以根据类生成实例时或希望与生成的实例解耦时,可以使用原型模式 示范代码(prototype.go) package Prototype type Prototype interface { Name() s
什么是工厂方法模式? 工厂方法模式即将实例的生成交给子类,用Template模式来构建生成实例的工厂 不必New关键字来生成实例,而是调用生成实例的专用方法来生成实例,这样就可以防止父类与其他具体类耦合 示范代码(factory.go) 创建一个工厂,用于生产通行证 package Factory
什么是模板模式? 模板模式即将具体处理交给子类,在父类中定义处理流程的框架,在子类中实现具体处理。 优点是在父类的模板方法中编写了算法,之后无需在每个子类中实现。 模板模式和桥接模式最大的区别 模板模式每次都要去继承抽象类的功能,而桥接模式不需要。 模板模式使用每次都需要New一个新对象,而桥接模式
什么是单例模式? 单例模式即只有一个实例,确保只生成一个实例的模式 作用于可以确保任何情况下都只生成一个实例 只有第一次调用时,类才会被初始化 示范代码(singleton.go) package Singleton import "sync" var ( p *Peple once