
设计模式
文章平均质量分 71
灬倪先森_
区块链相关开发经验2年多的程序猿,区块链技术是一样信仰,我坚信终有一天它会变大,变强.
展开
-
Golang与设计模式-Abstract Factory抽象工厂模式
Abstract Factory抽象工厂模式是一种创建型设计模式。抽象工厂模式和 Factory工厂方法模式一样,都符合开闭原则。但是不同的是,工厂方法模式在增加一个具体产品的时候,都要增加对应的工厂。但是抽象工厂模式只有在新增一个类型的具体产品时才需要新增工厂。 场景 本文将以电子工厂生产电子产品为例来演示抽象工厂模式。 我们会定义两种类型的产品手机Phone 和平板电脑 Pad,以及两个不同品牌的生产厂商苹果和华为。 基本类型和接口 首先定义手机接口Phone,以及一个打电话的方法Call()原创 2021-08-18 23:17:33 · 319 阅读 · 0 评论 -
Golang与设计模式-Builder建造者模式
Builder建造者模式也是一种创建型设计模式,建造者模式就是把一个复杂的对象分成多个简单的对象,然后对这些简单的对象一步步进行构建,从而组成了一个复杂的对象。 建造者模式种有三个角色: 建造者(Builder)负责定义生成实例的接口 具体建造者(ConcreteBuilder)实现了Builder接口,定义生成实例时被调用的方法 指挥者(Director)负责使用Builder接口生成实例。它不依赖ConcreteBuilder 场景 本文内容我们就拿组装电脑为例,因为电脑就是由多个组件组成,且原创 2021-08-18 00:14:44 · 1049 阅读 · 0 评论 -
Golang与设计模式-Prototype原型模式
原型模式其实就是根据实例的原型生成新的实例的一种创建性设计模式。使你能够复制对象,甚至是复杂对象,而又无需使代码依赖它们所属的类。 典型的应用就是依赖注入,做过.Net 和 Java开发的小伙伴应该对此很熟悉。go也有依赖注入框架 场景 本期场景就很简单了,我们实现了一个简单的依赖注入模型。 基础类型和接口 这是原型接口,需要实现依赖注入的实例必须实现这个接口 // 产品接口(原型接口) type Product interface { // 用于演示的方法 Use() // 克隆方..原创 2021-08-11 23:16:01 · 359 阅读 · 0 评论 -
Golang与设计模式-Singleton单例模式
单例模式是我们工作中最长用到的设计模式之一,单例模式也是创建型设计模式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 通过单例模式可以保证系统中一个类只有一个实例且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 单例模式一般分为两种实现方式:懒汉模式和饿汉模式 饿汉模式 表示程序在初始化阶段或使用前已创建出了一个实例,在程序后面的生命生命周期内将不再创建 // 声明原创 2021-08-10 21:02:02 · 464 阅读 · 0 评论 -
Golang与设计模式-Factory工厂模式
工厂模式是创建型设计模式,在工厂模式中,父类决定实例的生成方式,但并不决定所生成的具体的类,具体的处理全部交给子类负责。 工厂模式是使用Template模版模式来构建生成实例的工厂。这也是为什么我们要先学习模版模式的原因,而不像其他博主按照设计模式的类型划分后一类一类的学习。 场景 本期我们以一个制作身份证(IDCard)的程序来演示工厂模式。 基础类型和接口 老规矩,先定义基础类型和抽象接口。 首先我们先定义一个工厂接口Factory,并定义了3个方法,分别是对外公开生成实例的Create()原创 2021-08-09 23:23:22 · 594 阅读 · 0 评论 -
Golang与设计模式-Template Mode模版模式
模版模式的核心思想就是在弗雷中定义处理流程的框架,在子类种实现具体处理。 了解了设计模式的核心思想,那么我们就可以按照这个想法去实现一个事例来演示一下模版模式的使用场景跟方法。 场景 我们可以模拟一个完成的手机操作流程,从解锁 -> 打开微信发起转账给老婆 -> 支付验证,我们可以对这一系列操作合并在一起叫 微信转账。而IPhone7跟IPhone12的操作是有差别的,我们知道IPhone7是可以用TouchID解锁手机和微信支付验证的,而IPhone12用的是FaceID来完成解锁手机跟原创 2021-08-08 21:22:46 · 407 阅读 · 0 评论 -
Golang与设计模式-Adapter适配器模式
适配器模式是我们在工作中会经常使用到的模式。比如对接口升级的同时,又要保证对旧借口的兼容。 场景 生活中我们会遇到这种情况,我们常用的插线板三插孔(10A)与空调插头(16A)的大小不一样,虽然都是三插孔。当我们买了空调,安装时发现空调插头并不能插入我们原有(10A)的插孔时,我们可以买一个插头转换器,如下图。 我们可以把10A的反面插头插入我们正常的10A三插孔,再将空调的插头插入正面的16A三插孔即可。这里,我们的插头转换器扮演的就是 适配器(Adapter)的角色。 接下来我会以这个插头.原创 2021-08-08 01:31:04 · 542 阅读 · 0 评论 -
Golang与设计模式-Iterator迭代器模式
迭代器模式在Java和C#中常用到的设计模式,这种模式主要用于对于集合(Aggregate)的有序访问。 一般情况下Golang的开发中是不需要使用到的,像Slice跟Array都可以通过for...range...来完成遍历。但不是说一定就用不上哦。 接口 首先,我们知道迭代器模式主要适用于数据集合,那么我们就可以定义一个集合(Aggregate)接口,这个接口只有一个方法,就是返回给我们一个迭代器(Iterator)。 // 集合接口 type Aggregate interface { /原创 2021-08-07 13:44:36 · 1199 阅读 · 0 评论 -
Golang与设计模式-简单工厂模式
我们在实例化对象的时候通常用的是New关键字,但是有了工厂(方法/函数),我们在声明对象的时候就可以用工厂了,用new导致代码不够灵活,用工厂来实例化对象很灵活。 定义: 简单工厂模式的核心思想就是根据输入不同的参数,返回不同的实例。多种参数多种返回值。 事例: 比如我们有一个生产IPhone的工厂(工厂构造函数),那么我们告诉工厂我们想要的IPhone的型号(iPhone的版本号以函数参数的形式传入),让其为我们生产(返回实例)。 type IPhone interface { Logi.原创 2021-08-05 22:15:44 · 279 阅读 · 0 评论