抽象方法一般有两个分解decomposition和组合composition,这两种方法的方向正好相反,分解是将整体分解为部分,而组合是将部分组合成整体。
在软件架构设计和编码中,我们经常快速灵活使用这两种方法,比如将一个类分解为多个小类,将一个方法分解为多个方法,或者将几个类合成一个类一起调用,GoF设计模式中有不少模式是展示这两种方法的使用,比如桥模式或适配器模式是将几个类组合在一起调用。
分解和组合经常结合在一起使用,实际就是拆了装,装了拆,如同玩玩具一样,只不过每一次拆装都是有具体依据。
分解组合实际是一种虚拟重建方法,将现实世界中的模型使用抽象符号分解为一个个基本元素,然后再使用“关系”将它们组合在一起形成一个稳定的结构,形成结构后一个系统就具备了初步的形态。生命正在孕育之中。
以上主要是软件中的分解和组合使用,其实这两种方法适合更广泛的思维方式,分解思维能够让人不断研究细节,比如西医治病采取的是分解思维,肝脏有病就解剖肝脏,直至分解到细胞;而中医是采取组合方法,肝脏有病寻找与其有关系的肾脏进行补养,中医依据的五行水木金火土代表一种关系,肝脏代表木,而肾脏是水,水生木,也就是水能够滋养植物,所以,中医才采取补肾的方式治肝。
由此可见,类型与关系是分解与组合面对的主要元素,一个大的事物分解为不同类型的小事物,相同类型的事物可以合并成一组类型,分解时尽量切断各种关系,除非是高聚合的组成关系,也就是缺一不可的关系,这样才能孤立事物,研究事物;而组合是拉关系,通过关系将不同事物组装在一起。如果反映到数据库建模上,就是先建数据表,再找外键关系。
http://www.jdon.com/46793