积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

设计模式学习总结之一

 设计模式其实只是一种程序设计的思想准则。通过该思想准则来指导我们的程序开发行为,尽量让开发的程序更加稳健、高效、思路清晰、少bug......
开发一程序项目,往往并不只限于单一地使用某一模式。往往会多种模式同时使用。

 其实,设计模式在具体项目中的应用开发中。要说要用xxx/xxx模式来搭框架开发等等,这些都是不对的。因为个人认为,设计模式的应用,是随着项目的
不同而定的。因为不同的项目有着不同的解决方案。而不同的解决方案,将决定着,需要使用哪xxx/哪xxx模式来处理会比较好,此时才能说,确定了项目
的框架等等。
 比如说:本来需要开发一个本地资源管理的项目。如果你一开始就给它定了一定要用单实例模式来搭框架实现。那我们就不明白了这个实例,在框架中,
到底它应该是什么。反过来,正常的,我们应该根据这个项目的需要来确定应该用到的模式。就拿该例子来说。我们可以对资源方面,使用抽象工栈模式
在资源与展现及其处理方面,我们可以应用观察模式(即:所谓的observer模式)。如此一来,我很明确了,该系统大置的框架。这正应了刚开始的一句话
:设计模式只是一种程序设计的思想准则,它只是用来指导程序开发的行为。

 当然想懂得设计模式的东东,确实还是离不开面向对象(的思想)。对oo思想更解的越深刻,学起设计模式的将相对越轻松,也更解的会更深刻些(当然,
学习它将是个不断迭代的过程的)。反过来,对设计模式理解的越深刻,对oo的理解及应用与设计,也将大大有益。

一:Factory模式(工厂模式)

 所谓的Factory模式,即:它能类似工厂一样,不断地产生(即:创建)“产品”出来。但它所创建出来的那些“产品”,一般是抽象类的产品。举例:
假如有抽象类AbstractBasicClass。我们要想使用它,必须得有它的实现类。按正常来说,我们可以直接通过其具体的子类实例化一个产品出来。但这样会
有个问题,当AbstractBasicClass拥有N种不同的实现子类时,那我们到底要使用哪种具体子类来实例化,并且,各个不同的具体实现子类的命名,也将是
个可怕的问题。因此这样的维护将变得十分复杂。而Factory的设计就可以起来很好的一个维护作用。其实Factory模式的设计,还有一个好处,就是使得实例
化得到了推迟(到了后期----一般指执行期)。

二:AbstractFactory模式(抽象工厂模式)

 上面Factory模式,其实针对的是一类类的情况,即:处理的上上面的AbstractBasicClass这一类类的情况。而实际项目中,却往往需要处理N种的这样抽象类、
的情况。此时,我们将这N种类的产品创建都归到一个Factory中时,此时的Factory即为一个AbstractFactory了。因此说,Factory与AbstractFactory只不过
是处理的类各类的个数差异罢了。其思想是类似的。
 但一般来说AbstractFactory所产生出来的种抽象类,其实它们之间,一般来说,或多或少,会是有一定的关系的。比如:一个Abstractfactory产生出两个
抽象类的产品A和B。则A可能就需要B的某些功能,反之类似。

 小结:Factory与AbstractFactory的设计,最终的目的都只是为了使用系统抽象类的维护更加简单些。

posted on 2011-05-15 12:14 Jacc.Kim 阅读(424) 评论(0)  编辑 收藏 引用 所属分类: 设计模式

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理