Topic: 本人学java不久,想学以下设计模式,不知从何入手

  Print this page

1.本人学java不久,想学以下设计模式,不知从何入手 Copy to clipboard
Posted by: holly2k
Posted on: 2008-03-31 16:40

如题,希望各位高手推荐一两本好书

2.Re:本人学java不久,想学以下设计模式,不知从何入手 [Re: holly2k] Copy to clipboard
Posted by: jameszhang
Posted on: 2008-04-12 20:41

先找本 uml 的初级教程,把 uml图 大致了解下 (尤其类图对象图) ,然后找本《java模式》看看先,如果看的困那 就看《Head First Design》都不错的好书

3.Re:本人学java不久,想学以下设计模式,不知从何入手 [Re: holly2k] Copy to clipboard
Posted by: rogertu
Posted on: 2008-06-04 23:52

部分引自我的blog:http://www.blogjava.net/RogerTwain/archive/2007/03/23/105678.html

本质上说,如果说一个软件的需求是永不变更或发展的,该软件也就不需要任何设计,怎么编码实现都行,只要需求满足,性能达标。但事实上,软件的本性就是不断增强,不断扩展,不断变化的。我们可以控制指尖流淌出的每行代码,但控制不了奉为上帝的用户的需求。编码结束,测试通过,用户在使用过程中才发现原来的需求有问题,要变更需要或提出新需求,怎么办?向用户抗议:需求总在变,没法做!?平抑心中的抱怨,加班加点大量的修改代码,疯狂的测试,依然是时间紧迫,心中没底?抑或了然于胸:这个变更或新需求合理,系统很方便纳入;于是坦然地和用户协商下一个交付时间点?

好的系统设计追求如下特性:
可扩展性(Extensibility):新的功能或特性很容易加入到系统中来;
灵活性(Flexibility):可以允许代码修改平稳发生,对一处的修改不会波及到很多其他模块;
可插入性(Pluggability):可以很容易地将一个类或组件抽出去,同时将另一个有相同接口的类/接口加入进来。

而设计模式就是综合运用面向对象技术和特性进行好的系统设计的常用方法和经验的提取和汇总。掌握23种设计模式的关键是理解它们的共通目的:使所设计的软件系统在一般或特定(系统将来在特定点上需要扩展的可能性大)场景下,尽可能的对扩展开放,对修改关闭。即面对新需求或需求变更,容易开发独立于既有代码的新代码接入到现有系统或对现有代码做可控的少量修改,而不是在现有代码基础上做大量的增、删、改。为了这一目的,23种设计模式贯穿了面向对象编程的基本原则:面向接口或抽象编程,而不是面向实现编程。

学习设计模式的关键是理解各自的问题域(实际开发中常见问题情景的抽象)以及如何运用OO抽象进行解决。如果你曾有过维护设计不佳但要持续扩展的大型软件项目/模块的痛苦,那么对设计模式的理解将会更深刻Smile实际开发中,经常反思这是一个好的设计吗?怎么会更具可扩展性,灵活性,可插入性?

部分引自我的blog:http://www.blogjava.net/RogerTwain/archive/2007/03/23/105678.html

关于书,推荐两本:
Design Patterns: Elements of Reusable Object-Oriented Software(归纳这些模式的大师的经典之作,尽管示例程序为C++和SmallTalk)
Java与模式:基本上对上部书的全面阐述使得更加易懂并结合Java讲解如何实现/应用这些模式。加了作者深刻广泛的理解,有些地方略显罗索和牵强。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923