一、
(一)模式(Pattern)是较大的结构
(二)结构形式愈大,通用性愈小
(三)从EIT造形,组合出设计模式
1、对架构师来说,EIT是一种技能,是一种思考的能力。思考的能力才是架构师所要掌握的技能。设计模式只是架构师用来练习EIT造形模式的标的。
2、相对于原子和分子,EIT造形属于原子层级,设计模式(Design Pattern)属于分子层级
3、
(1)左边EIT造形负责<创建>右边EIT造形的对象(Object)
(2)就称左边的EIT造形为:Factory(工厂)EIT
(3)而称右边EIT造形为:Product(产品)EIT
(四)介绍GoF设计模式
模式告诉我们理想的方案像什么、有哪些特性:同时也告诉我们些规则,可以依循之,而产生适合于环境的具体方案
(五)GoF的Template Method模式
1、Template Method模式的基本要素
(1)控制反转(IoC:Inversion of Control)是<基类/子类>结构里的重要机制。Template Method模式是实现IoC的一种基本模式
2、Template Method的范例:
(1)Android+TM模式例子 一
Android 的绘图使用画布(Canvas)来把图显示于View的窗口里,并且从View类别而衍生子类别,提供更多功能将图形或图片绘制于画布上。
在View类别里有个onDraw()函数,View类别体系里的每一个类别都必须覆写(Override)这个onDraw()函数,来执行实际绘图的动作
(五)GoF的Observer模式
1、定义对象间的1:N依赖关系,以便当一个主题对象(如A)的状态发生改变时,所有依赖于它的对象(如B,C,D...)都得到通知,然后可向主体对象(A)取得最新状态
如果Observer是个纯粹抽象类别(Pure Abstract Class),它扮演接口角色,就相当于java语言的interface机制。
虽然父类别Observer已经变为了IObserver接口了,其卡榫函数还是存在那里,只是形式有些变化而已。
(六)GoF的Composite模式
1、此模式能建立多层级的包含关系(即多层级Whole-part关系)
2、在自然界种常见这种关系,例如,树叶是树的一部分,但树叶又是个整体,其内含着叶脉、叶绿素等[部分]对象
从这个图形中,可以看出这些对象可依其角色而分为两类:
(1)<Leaf物件>:如上图里的[白色]类别之对象,它们不具有Whole之角色,只具有Part之角色。这通称为[基本组件](Primitive Component)
(2)Composite物件:如上图中的[灰色]类别之对象,它们具有Whole之角色,也可能具有Part之角色。这通称为[复合组件](Composite Component)
(3)因此,只需定义两个类别---Leaf及Composite类别即行。
例如,上图里[树]、[叶]等都是Composite的子类别,而[枝]、[叶脉]等则是Leaf的子类别
3、在企业界,最典型的例子是[物料表](Bill of material简称BOM)
例如,[车前灯]的BOM表,如下图:
(1)一个灯身可以包括多个leaf:
(2)将leaf变为EIT造形
(3)为什么是1对多呢?
Composite与AbstractLeaf是1对多的关系,说明1个Composite包含多个Leaf
右侧Composite到Composite的箭头表示1对N的关系,说明1个Composite可以包含多个Composite
(4)变为EIT造形
(5)两个1对N关系都是一样的,所以可以将它们合并起来
Composite对Compoment的关系是1对N,
而Leaf继承自Compoment,所以Composite对Leaf的关系也是1对N
4、View体系含有一个Composite模式
(1)在Android平台里,像Button或ImageButton等屏幕控件皆通称为View
(2)多个View能组合在一起,就会各种排列方式,即称为[布局](layout)
(3)这Layout类别就是从ViewGroup父类衍生出来的。
5、