谁能帮我解释一下Object Factory及Opaque Object Adapter设计模式?(0分)

  • 主题发起人 主题发起人 yh
  • 开始时间 开始时间
Y

yh

Unregistered / Unconfirmed
GUEST, unregistred user!
近日,一直在看ECC设计模式,但对于文中提到的Object Factory 及Opaque Object Adapter
一直不清楚,所以得不到进展,特求助?
等问题得到解决再放分。
 
看看GOF的abstract factory和adapter,
差不多的
 
To Tense:
老大,我一直在看啊,天天看,时时看,分分看啊。可惜没进展。
看得我都想改行,回家种地了!
能否具体指教,多谢。
 
我的进展虽然也不是很大,但是还认为有一点果实([?])
对于工作上项目的分析,也试着采用OO来分析。
其实我认为最主要的还是用到[red]实际[/red]中去,
[red][blue]使用[/blue][/red]比看还重要([?])。
 
to Tense:
谢谢!
使用比看还重要!就是这样,连Design Panttern中也这么讲。
但难就难在如何将设计模式与如何与实际连系起来,其实,如果能
在自己的代码体现出来,那么,才能说,对XX设计模式有点理解了。
我之所以提出这个问题,也就是想得到大家这方面的帮助。或许我错了
永远也不可能得到。
再次感谢!
 
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]
[:)][:)]
 
to yh:
你说的ECC,是不是指这个? http://www.microsoft.com/china/msdn/technic/library/techart/desipat.asp
对于ECC模式,我的评价如下:
1.它不能适应有大量业务类的情况
2.它对对象持久化的处理过于简单
3.对于复杂应用,应抛弃以细粒度对象为中心的系统架构,转而考虑分层,将对象持久化作为系统中单独的一层。可参考 www.ambysoft.com 上的文章
对Delphi的Persistence Layer,当前市场上的产品有:
http://www.ObjectSight.com 的ObjectSight
http://www.seleqt.com 的InstantObject
http://www.techinsite.com.au/ 的TechInsite
我觉得相对做得比较好的是InstantObject
 
说得太好了。
有这么一句话, "separate the changing from those unchanging"
就是让变与不变尽可能的独立,所有的模式都是遵循这条原则。
 
to smartkid:
哈哈,我就知道,你行!
用delphi已经好几年了,接触OO及OOP的概念说来也有8,9年的时间了,只可惜天
生弱智,不得要领。也是今年,才有一种深深的体会,为什么看自己写过的代码,没
有可维护性及可重用性,究其原因,就是OO的思想没有进展,正如你在cndev上说过的
话,思想没有改变。所以,想静下心来,好好整理整理自己了。是时候了!!
那么,如何OOP呢?
尽量用OO的特性来编程,而其最核心的实现就是Class!所有的实现都用Class来表
达。在这种想法的支持下,写了很多的Class,大大小小的,新的问题产生了,那就是
这些Class的实现,总感觉这样也行,那样也成,里面存在着说不清的问题。
比如:我做了一个TSystemParameter类,管理应用的参数,当我写好了这个类,
怎么用呢? 我把他做为DM的一个property?还是在整个应用中就产生一个实例,当
成公用的变量来用?在看了Singleton模式之后,才觉得,采用后一种方法有理论依据。
一直想用Class来描述实体,但不知有什么好的Persistence Layer产品,目前只知道
你上文中提到的ObjectSight,而你又提到另外两个?并说InstantObject再好一些?能否
再提示一下,[red]InstangObject为什么好呢?[/red]在你的建议下我会选择一种来用的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
593
import
I
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部