Golang设计模式
pirlo-san
这个作者很懒,什么都没留下…
展开
-
Golang的面向对象
如你所知,封装、继承、多态和抽象是面向对象编程的4个基本特征,本文描述Golang语言是如何实现这些特征的。1 Golang的面向对象类型Golang实现面向对象的两个关键类型是struct和interface,其中struct类似C++的普通类类型,interface则对应抽象类类型。与C++采用public/protected/private指示成员和方法的可见性不同,Golang采用大小写标识原创 2017-08-19 10:28:26 · 9176 阅读 · 6 评论 -
Golang设计模式-创建型-简单工厂
1 引例李雷喜欢上了韩梅梅,他知道韩梅梅喜欢吃汉堡,于是就想买汉堡给她吃,但李雷不确定韩梅梅喜欢的是肯德基的汉堡还是麦当劳的汉堡,怎样帮助他呢? 最直观和最简单的实现就是if+else: if prefer == "KFC" { CreateKfcHamburger()} else if prefer == "McDonalds" { CreateMcdonaldsHambur原创 2017-08-20 23:16:08 · 493 阅读 · 0 评论 -
Golang设计模式-创建型-工厂方法
1 引例仍然是汉堡的故事,在Golang设计模式-创建型-简单工厂 一文中,我们提到简单工厂的缺点之一是当产品种类较多时,工厂逻辑会变得非常复杂。哪里复杂,我们就分解哪里,这是分治法最朴素的思想,既然工厂逻辑复杂,那我们就把它分解一下吧。2 工厂方法2.1 定义工厂方法通过定义一个工厂基类和产品基类,并派生相应的工厂和产品子类的方式,实现由具体工厂生产具体产品的目标。2.2 工厂方法三要素工厂系列的原创 2017-08-30 21:52:14 · 1523 阅读 · 0 评论 -
Golang设计模式-创建型-抽象工厂
1 引例接上文Golang设计模式-创建型-工厂方法 ,有一天,李雷听说韩梅梅不但喜欢吃汉堡,还喜欢吃鸡翅,怎么办呢?让工厂的Create方法既生产汉堡,又生产鸡翅吗?小皮说:不好不好,这违反了“单一职责”原则,生产汉堡与生产鸡翅耦合在一起,任何一种方法发生变更都会毫无必要地影响另外一种产品的生产,有没有更好的办法呢?当然有,且听小皮道来…2 抽象工厂2.1 定义抽象工厂在工厂方法的基础上引入了“产原创 2017-09-02 22:23:35 · 493 阅读 · 0 评论 -
Golang设计模式-行为型-观察者模式
引例某城市气象站需要你开发一个应用,该应用需要完成如下功能:保存气象站提供的温度、湿度、PM2.5等气象数据,并提供更新接口,以便气象站在气象数据有更新时调用;提供三种气象看板:当前天气看板负责显示实时温度和湿度;统计看板负责显示最近10天的平均温度和湿度,空气质量看板负责显示PM2.5的值;在气象数据有变化时及时通知到三种看板,以便看板能够及时更新。最直观的实现type Weat...原创 2018-11-17 17:02:33 · 525 阅读 · 1 评论