关于本章
本章的标题是"assemble",中文意思是"组装、装配、聚集"。它是源自于wikipedia Object composition中的这段话:
Object-oriented programming is based on objects to encapsulate data and behavior. It uses two main techniques for assembling and composing functionality into more complex ones, sub-typing and object composition.[2]
显然,本章所要探讨的话题是: OOP中的能够实现“assembling and composing functionality into more complex ones”的technique;
上面这段话中,已经告诉了我们两个答案,并且这两个是当前OOP中的主流的technique,除此之外,还有一些其他的technique,下面是本章将要讨论的technique:
technique | 简介 | 章节 |
---|---|---|
inheritance | "继承", 又称为"sub-typing" | Theory\Programming-paradigm\Object-oriented-programming\Assemble\Inheritance |
composition | "组合" | Theory\Programming-paradigm\Object-oriented-programming\Assemble\Composition |
mixin | "混入",其实它是基于inheritance的,不过有它的独特之处, 所以将它单独进行描述 |
除了上面列出的这些technique外,不断地涌现出了新的technique;
通过上述technique,我们可以实现assemble,进而实现了code reuse;
inheritance and composition
这是目前主流的technique;
inheritance VS composition
虽然两种都能够实现assemble,但是从design的角度来看,它们是有着差异的,在Composition-over-inheritance
中对它们进行了对比。
delegation and inheritance
在维基百科Object-oriented programming中有这样的描述:
Delegation is another language feature that can be used as an alternative to inheritance.
在wikipedia Composition over inheritance中,也介绍了使用delegation来实现inheritance的内容。
在Theory\Programming-paradigm\Object-oriented-programming\Assemble\Composition\index.md
中将具体介绍如何来实现这一点。
Combination explode
对于combination explode,composition有着天然的优势,典型例子:
1、decorator pattern中的: pizza + topping