to yh:
关于
Object Factory:
对此模式,主要应参见Factory Method及Abstract Factory
一般来说,对象的构造最普遍的情况是在客户代码中直接调用构造函数。这时就暴露了被构造的具体类型,
而通过Factory来创建,则可以不指明具体类型。Abstract Factory通常通过Factory Method来实现。
二者之间的区别主要是意图上的。
你谈到的ECC模式中,它可以同时使用Abstract Factory和Factory Method两种模式,当然Engine本身还可被实现为一个Singleton。
在分析使用的模式时,要注意
模式的使用经常会重叠地出现在同一个类中!
就整个ECC页言,它可以被认为是一个Abstract Factory,因为它的Collection和Class构成一个族。
Engine使用了Factory Method以创建Collection及Class
Engine本身可被实现为一个Singleton
分析模式时,还要注意不同的模式可能在局部的代码表现会很类似。
一般而言,一个模式可有[red]多种[/red]实现方式,而模式本身也会有多个变种。
模式最重要的地方是告诉你哪些设计将来可能会发生变化,并且如何去隐藏这些变化,使得每一部分都具有高度的灵活性!
做设计的时候首先不是去考察采用什么模式,而是去分析哪些地方将来会有变化,
再思考如何尽量屏蔽这种变化对设计的其他部分的影响,设计模式的作用就是为发现变化及屏蔽变化提供了现成的案例[
]
所以呢,用设计模式切记不要去套模式,而应该从自己的需求出发,仔细分析需求,然后对需求进行抽象。
(这里所说的不是编程时的类的抽象,而是一种设计层次的抽象)
分析到一定程度,模式自然就显现出来了。
[red]
设计模式是本来就在那里的,而不是你设计出来的![/red]
[
][
]