您的位置:首页 > 其它

设计模式什么的哪有那么神秘 ----第一集 一些吐槽和重构的韵味

2013-08-04 06:35 495 查看
一日面试,

......

Hr:你对设计模式熟悉吗?

应聘者A:我了解常用的设计模式,平时经常使用工厂模式和单例模式.而且我也看过一些讲23种设计模式的书.其他不常用的模式用的不是太熟.

Hr:你用过外观模式吗?

应聘者A:没有.但是我了解过,在书中看到过.

......

以上就是笔者最近一次招聘程序员的时候一段对话.只要是来应聘开发岗位的应聘者.基本我都会问以上的问题.一提设计模式,很多程序员都知道这是很重要的东西.要学,而且面试肯定问.但是绝大多数的求职者在回答这个问题的时候,不约而同提到单例模式,工厂模式.而对于其他模式只知其名.而且似乎很多公司在面试的时候只问这两种模式.因为这两种模式是SSH框架中基本原理的一部分.目前javaEE开发的大环境仍然是SSH.所以学校里的老师也只教给学生这两种模式.

笔者并没有觉得SSH多么不好.而且笔者也在用.笔者只想讨论另一个问题.也是困扰很多程序员的问题.如何学通设计模式.如何让设计模式不再是高高在上理论上的存在.而真正可以融合到我们日常的开发工作中来.

上面的问答,为什么笔者要问面试者外观模式.因为在笔者看来,外观模式是最不像设计模式的设计模式,经常给面试者说,只要你认真写过几天代码,就一定会用到的模式.当然GOF提出的23种设计模式中,不仅仅只有外观模式简单.比方说代理模式,只要认真学过继承就一定用过.比方说简单工厂,只要写过switch语句就一定用过.

那么,今天就从外观模式开始说起吧.

为什么说外观模式简单,因为外观模式实际上就是把原来乱七八糟的调用整理到一起的过程.笔者把这个模式理解为代码重构.

举个栗子:

Class 炮兵{

Fun:开炮();//表示这是一个方法 Fun 是 function 的缩写

}

Class 枪兵{

Fun:开枪();

}

代码完成后可以很好的完成炮兵开火和枪兵开火的功能.但是后期需求提出要增加一键全部开火的功能.长官喊:士兵,开火!!.无论是什么士兵全部开火.

这个时候就需要增加一个新类,名字叫士兵.通过士兵的开火功能,把炮兵,枪兵的开火功能集中在一起(封装).

Class 士兵{

Fun:开火(){

炮兵.开炮

枪兵.开枪

}

}

不知道各位,是否体会到了其中的韵味.外观模式,有一种对代码进行二次封装的味道.或者说是一种自下而上式的重构技巧.是一种抽象的思维方式.这种思维方式在各种设计模式中基本都有体现.比方说代理模式.因此我认为,学习设计模式应该先弄懂外观模式这种思维方式.然后看其他模式就会轻松一点.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: