`
BlogDown
  • 浏览: 223956 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

需要掌握的JAVA设计模式 Posted on 2011-02-22 10:19 edsion 阅读(91) 评论(0) 编辑 收藏 所属分类: 设计模式

阅读更多
需要掌握的JAVA设计模式


    设计模式是面向对象思想的集大成,GOF在其经典著作中总结了23种设计模式,又可分为:创建型、结构型和行为型3个大类。对于软件设计者来说,一般的过程就是在熟练掌握语言背景的基础上,了解类库的大致框架和常用的函数和接口等,然后多再在百般锤炼中,提高对软件设计思想的认识。

    软件设计者要清楚自己的定位和方向,一味的沉溺于技术细节的思路是制约个人技术走向成熟的毒药。因此,学习软件设计,了解软件工程,是每个开发人员必备的一课。笔者在此不想详细的描述各个设计模式的细节,我想google和baidu上的资料已经多如牛毛了。而且,争取的学习方法也不是了解所有的设计模式就可以无敌于天下。我所强调的学习方法就是在熟练掌握基本要素的基础上,了解大致的框架。这一条不仅是学习类库的方法,对设计模式来说是可行的。同时,切记的是在平时的积累中,不断的体会和实践。因此,本文的目的就是将23种模式中,必须掌握的几个最关键、最常用的设计模式,做以总结和简述。

    1 Factory Pattern

    上榜理由:将程序中创建对象的操作,单独出来处理,大大提高了系统扩展的柔性,接口的抽象化处理给相互依赖的对象创建提供了最好的抽象模式。

    2 Facade Pattern

    上榜理由:将表现层和逻辑层隔离,封装底层的复杂处理,为用户提供简单的接口,这样的例子随处可见。门面模式很多时候更是一种系统架构的设计,在我所做的项目中,就实现了门面模式的接口,为复杂系统的解耦提供了最好的解决方案。

    3 Command Pattern

    上榜理由:将请求封装为对象,从而将命令的执行和责任分开。通常在队列中等待命令,这和现实多么的相似呀。如果你喜欢发号施令,请考虑你的ICommond吧。
    4 Strategy Pattern

    上榜理由:策略模式,将易于变化的部分封装为接口,通常Strategy 封装一些运算法则,使之能互换。Bruce Zhang在他的博客中提到策略模式其实是一种“面向接口”的编程方法,真是恰如其分。

    5 Iterator Pattern

    上榜理由:相信任何的系统中,都会用到数组、集合、链表、队列这样的类型吧,那么你就不得不关心迭代模式的来龙去脉。在遍历算法中,迭代模式提供了遍历的顺序访问容器,GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。.NET中就是使用了迭代器来创建用于foreach的集合。

    6 Adapter Pattern

    上榜理由:在原类型不做任何改变的情况下,扩展了新的接口,灵活且多样的适配一切旧俗。这种打破旧框框,适配新格局的思想,是面向对象的精髓。以继承方式实现的类的Adapter模式和以聚合方式实现的对象的Adapter模式,各有千秋,各取所长。看来,把它叫做包装器一点也不为过,

 7 Observer Pattern

 上榜理由:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。观察者和被观察者的分开,为模块划分提供了清晰的界限。在.NET中使用委托和事件可以更好的实现观察者模式,事件的注册和撤销不就对应着观察者对其对象的观察吗?

    8 Bridge Pattern

    上榜理由:把实现和逻辑分开,对于我们深刻理解面向对象的聚合复用的思想甚有助益。
 
    9 Singleton Pattern

    上榜理由:改善全局变量和命名空间的冲突,可以说是一种改良了的全局变量。这种一个类只有一个实例,且提供一个访问全局点的方式,更加灵活的保证了实例的创建和访问约束。.NET Frameeork已经封装了Singleton类,我们拿来即可。

    总结

    仁者见仁。以上只是笔者一家之言,更重要的真知灼见皆来源于实践,设计思想和模式的应用也来源于不断的学习和反复,我也将一如既往。此文只是开端,未来才是不断的探索。

分享到:
评论

相关推荐

    js代码-edsion11Nodejs

    综上所述,"js代码-edsion11Nodejs"这个项目很可能是一个使用Node.js开发的JavaScript应用,可能包含前端和后端功能,`main.js`作为项目的主入口文件,而`README.txt`则为开发者提供了项目的基本信息和使用说明。...

    电子仿真Edsion4.0

    Edison 4可以用虚拟设备、声音和动画创建、测试并且安全地修复电路。可看到栩栩如生的3D实物组件、又可以看见对应的电路图。

    visio教程入门到精通(visio2003教程(edsion).ppt)

    visio教程入门到精通(visio2003教程(edsion).ppt)

    visio2003教程(edsion)

    本共享资源为本人整理;深入浅出;希望对您物有所值;好好学习;天天向上。

    家居服饰类源码

    【描述】提到“要拿来用的话,修改的地方比较少”,这暗示了该源码可能已经经过了良好的设计和预配置,适应性较强,可以快速适应家居服饰业务的需求。大部分修改工作可能集中在后台管理系统,这意味着源码可能有一个...

    Intel® Edison Software Release Notes Package Version: 2.1

    This Intel® Edison software release provides increased functionality for projects using the Intel® Edison development board. Key enhancements include:  MCU feature  Audio support ...

    最新代理系统国富通三方支付平台网站源码 全套开源 可对接其他支付接口

    这表明系统设计时考虑到了支付方式的多样性,用户可以根据需求添加或切换不同的支付通道,如支付宝、微信支付等,以满足不同用户的支付习惯。 【标签】"第三方支付",第三方支付是指由非银行金融机构提供的支付服务...

    ecshop3.6_ectouch2.7_h5_appservice.rar

    《ECShop 3.6与Ectouch 2.7:构建移动电商的全面解析》 ECShop 3.6 和 Ectouch 2.7 是两款在电商领域广泛使用的...然而,需要注意的是,这份资源仅供学习参考,实际应用时应遵守相关法律法规,尊重原作者的知识产权。

    C#WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用

    介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking"。 布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之...

Global site tag (gtag.js) - Google Analytics