随笔分类 -  Golang设计模式

摘要:观察模式 样例代码 /* 观察者模式 观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。 在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者, 而且这些观察者之间可以没有任何相互联系,可以 阅读全文
posted @ 2022-10-17 16:43 李成果 阅读(26) 评论(0) 推荐(0) 编辑
摘要:策略模式 样例代码 /* 策略模式 Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。 在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。 Strategy(抽象策略类):它为所支持的算法声明了抽象方法,是所有策略类的父类,它可以是 阅读全文
posted @ 2022-10-17 15:19 李成果 阅读(128) 评论(0) 推荐(0) 编辑
摘要:命令模式 样例代码 /* 命令模式 将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化; 对请求排队或者记录请求日志,以及支持可撤销的操作。 命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。 命令模式可以将请求发送者和接收者完全解耦 阅读全文
posted @ 2022-10-17 14:34 李成果 阅读(58) 评论(0) 推荐(0) 编辑
摘要:模板方法模式 示例代码 /* 模板方法模式 模板方法模式中的角色和职责 AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基本操作可以是具体的,也可以是抽象的, 每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。 阅读全文
posted @ 2022-10-11 15:52 李成果 阅读(149) 评论(0) 推荐(0) 编辑
摘要:外观模式 示例代码 /* 外观模式 根据迪米特法则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。 Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等, 提供一个一致的简单的界面。这个一致的简单的 阅读全文
posted @ 2022-10-08 16:31 李成果 阅读(27) 评论(0) 推荐(0) 编辑
摘要:适配模式 示例代码 /* 适配器模式: 将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式中的角色和职责 Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。 Adapter(适配器类):适配 阅读全文
posted @ 2022-10-08 15:45 李成果 阅读(27) 评论(0) 推荐(0) 编辑
摘要:装饰模式 示例代码 /* 装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。 装饰模式是一种对象结构型模式 装饰模式中的角色和职责 Component(抽象构件):它是具体构件和抽象装饰类的共同父类,声明了在具体构 阅读全文
posted @ 2022-10-08 14:42 李成果 阅读(35) 评论(0) 推荐(0) 编辑
摘要:代理模式 示例代码 /* 代理模式: 可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问 subject(抽象主题角色):真实主题与代理主题的共同接口。 RealSubject(真实主题角色):定义了代理角色所代表的真实对象。 Proxy(代理主题角色):含有对真实主题角色的引用,代理角 阅读全文
posted @ 2022-10-08 11:13 李成果 阅读(56) 评论(0) 推荐(0) 编辑
摘要:抽象工厂方法模式 代码 /* 抽象工厂方法模式 从工厂方法模式可以看出来: (1)当添加一个新产品的时候,比如葡萄,虽然不用修改代码,但是需要添加大量的类,而且还需要添加相对的工厂。(系统开销,维护成本) (2)如果使用同一地域的水果(日本苹果,日本香蕉,日本梨),那么需要分别创建具体的工厂,如果选 阅读全文
posted @ 2022-09-28 14:15 李成果 阅读(58) 评论(0) 推荐(0) 编辑
摘要:工厂方法模式 示例代码 /* 工厂方法模式 抽象工厂(Abstract Factory)角色:工厂方法模式的核心,任何工厂类都必须实现这个接口 工厂(Concrete Factory)角色:具体工厂类是抽象工厂的一个实现,负责实例化产品对象 抽象产品(Abstract Product)角色:工厂方法 阅读全文
posted @ 2022-09-27 18:20 李成果 阅读(41) 评论(1) 推荐(0) 编辑
摘要:简单工厂模式 示例代码 /* 简单工厂模式角色和职责 工厂(Factory)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 抽象产品(AbstractProduct)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接 阅读全文
posted @ 2022-09-27 18:16 李成果 阅读(28) 评论(0) 推荐(0) 编辑
摘要:Go设计模式 - 单例模式 实现代码 /* 单例模式 使用懒惰模式的单例模式,使用双重检查加锁保证线程安全 */ package _3_singleton import "sync" //Singleton 是单例模式接口,导出的 //通过该接口可以避免 GetInstance 返回一个包私有类型的 阅读全文
posted @ 2022-09-16 17:41 李成果 阅读(38) 评论(1) 推荐(0) 编辑