设计模式
代码界的小姑娘
这个作者很懒,什么都没留下…
展开
-
golang设计模式之建造者模式
建造者模式 一个Builder类会一步一步构造最终的对象,该Builder类是独立于其他对象的 主要解决在软件系统中,有时候面临一个复杂对象的创建工作,通常这个复杂对象由各个部分的子对象用一定的算法构建成。由于需求的变化,这个复杂对象的各个部分通常会出现巨大的变化,所以,将各个子对象独立出来,容易修改 实现 建造所有产品的接口 type Builder interface { Process1() Process2() Process3() } 实现具体的产品 type IntBuilder原创 2020-11-15 18:00:46 · 197 阅读 · 0 评论 -
golang设计模式之原型模式
原型模式 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。 实现 定义一个原型对象需要实现的接口 //原型对象需要实现的接口 //拷贝原有的数据 type CloneAble interface { Clone() CloneAble } 实现一个原型管理类 func NewProtoTypeManager() *Prot原创 2020-11-15 16:34:29 · 289 阅读 · 0 评论 -
golang设计模式之工厂模式
1.简单工厂模式 通过参数的方式创建产品,在增加一个新的类型时,除了要增加新的类和方法之外,还需要修改工厂函数,在工厂函数中添加case,这一点违背了对修改关闭这个原则(开放-封闭原则)。 //抽象的产品 type SuperMarket interface { GetGoods() } //参数的方式创建产品 func NewSupermarket( name string) SuperMarket { switch name { case "s": return &Snacks{}原创 2020-11-08 17:10:17 · 357 阅读 · 0 评论 -
设计模式
一、六大原则 开闭原则 一个软件实体类,模块,函数应该对扩展开放,对修改关闭。比如百度搜索,搜索是永恒的需求,只是按照什么条件搜索排序会有调整。 里式替换 原则上,任何基类可以出现的地方,子类都可以出现。里式替换是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,里式替换是对开闭原则的补充,实现开闭原则的关键步骤就是抽象化。而基类与子类的集成关系就是抽象化的具体实现,所以,里式替换原则是对实现抽象类的功能,但不能改变父类原有功能 单一职责功能 一个类只负责一项职责原创 2020-11-08 15:34:48 · 102 阅读 · 0 评论 -
golang设计模式之单例模式
golang设计模式之单例模式 核心作用 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 优点 由于单例模式只生成一个实例,减少系统性能开销,当一个对象的生产需要比较多资源时,就可以通过在应用启动的时候直接产生一个单例对象,然后永久驻留内存,例如日志模块 单例模式可以在系统设置全局访问点,优化资源共享问题,比如数据库里连接池 简单实现 type Singleton struct { } var singleton *Singleton var once sync.Once func G原创 2020-11-07 21:54:21 · 270 阅读 · 0 评论