在《设计模式-可复用面向对象软件的基础》(以下简称黑书)的第二章中介绍了一系列结构型模式,例如适配器模式,桥接模式,组合模式,装饰器等等设计模式。在黑书中,结构型模式设计如何组合类和对象以获得更大的结构,采用继承机制来组合或实现。黑书第二章重点表述的是如何通过继承下的组合来完成声明和实现的分离,但是实际上,整个一章观摩下来,类继承机制反而成为了组合的阻碍,去掉类继承,这些设计模式反而变得简单易懂,这也许就是Golang摒弃class的原因。在本节中,我们总结结构型模式在Golang中是如何通过简单的组合表现的。
以上是黑书的说明,在黑书的实现上,桥接和装饰器非常类似,都是在类成员中添加一个成员变量,在初始化的时候动态赋值,以分离类的实现。然而这两个设计模式的思想和继承可以说毫无关系,仅仅是组合而已,甚至比适配器还要简单。在Golang中通过组合可以非常容易的实现以上意图。
本节主要讲述黑书第二章,结构型模式在Golang中的使用,由于《设计模式》这本书是基于cpp,且市场上其他的设计模式大多也基于java等类似语言,所有的模式中都穿插着基类以及子类的概念,在类继承的基础上去通过组合来实现各种模式,实则隔靴搔痒,类的概念反而成为了阻碍。在Golang中没有类的概念,一切都以组合来实现,反倒让大部分设计模式变得鸡肋无用,降低了编码者的心智负担。
享元在黑书的结构型模式中应该算得上一个真正的设计模式,其思想主要是采用共享池去共享高频重复的对象。这个设计模式大量出现在各种文档中,通常一个十万字符对象级别的文档只需要共享三位数级别的字符对象,能够节省大量的空间以及初始化时间。
武之巅峰,是孤独,是寂寞,是漫漫求索,是高处不胜寒逆境中成长,绝地里求生,不屈不饶,才能堪破武之极道。凌霄阁试炼弟子兼扫地小厮杨开偶获一本无字黑书,从此踏上漫漫武道。请关注我的公众号“莫默”。
同样是豪门白富美,徐敏英和毛贤敏都是不错的联姻人选,但两人性格迥异,前者单纯正直,后者世故腹黑,像极了各自盛开的白玫瑰和红玫瑰。拿到重生剧本的陈道俊理性睿智,他目标清晰,头脑清醒,对于如何出招了然于心,大嫂过于八面玲珑,所以她根本不适合内心千疮百孔的自己!
十客郎