29.1 大学生毕业3条出路:学、仕、商
时间:2月7日 地点:大B房间 人物:大B,小A
小A:“师兄,在就业形势日益激烈的今天,大学毕业生应该如何面对求职难的问题。”
大B:“按照现今社会的主流说法,大学生毕业后的走向大体有三条——学、仕、商。”
小A:“学、仕、商?为什么?”
大B:“上大学以前,我的最初想法是,本科毕业后,先从商,成也好,败也好,人生嘛,什么都经应该历一下。等自己喜欢安定了,就去感受一下仕途。”
小A:“嗯!我现在也是这样认为的。”
大B:“但上了大学,了解了很多现实,很多跟理想差距很大的现实,现阶段我们要做的就是选好一条有利于自己的并且可行的路,然后按照要求和计划,努力提高自己相关方面的能力。”
小A:“我也曾这么想过。”
大B:“但来到大学以后,比较充分了解了社会现状,而这个现状使得我不得不放弃原来的思路,而且一些新问题比我原来想象的要复杂得多。而现在,我首先想提出的问题是本科毕业后,是考研还是就业。”
小A:“嗯,对!这是我一直在想的问题。”
大B:“是啊!这个问题离我们比较近,所以考虑得比较多。就选择而言,两个都有各自的好处和风险。考研的好处在于,毕业后,可以有个更高的台阶去面对社会,个人的第一身份也比本科生高得多。但它的风险在于,选择考研,至少要投入三年以上的时间,更遭的是有很多人成为了所谓的考研专业户。而如果把这笔时间投入到社会上,说不定已经有不小的成就。但提前走入社会的风险在于可能几年时间下来,还是一事无成,那还不如多读几年书,有个更高的学识和文凭。总的来说,就是把本科后的四年作为一个发展段,把考研与就业带来的收益和风险作权衡,其中有个零界点,现阶段迷茫的是,以个人自身的条件,应该站在选择的自我定位在界限的哪边,选择的自我定位有哪些标准,怎样努力才能最大限度有利于自己的定位。”
小A:“嗯!师兄的话真让我受益非浅。说的正是我现在困惑的问题。”
大B:“还有一个疑问是职业困惑,就是离开学校,无论是本科毕业还是硕士毕业,选择职业的切入点在哪,或者说以什么样的标准来区分到底是去考公务员,还是自己在政途以外的地方寻找落脚点才能最大限度地获取自己能创造的价值。”
小A:“嗯!”
大B:“说到这,很汗颜,因为这些选择都有很强的趋利性。最后,在找到自己先天所适合的路以后,怎样培养自己,使得自己更适合这条路,沿着适合自己的道路努力奋进,假以时日,收获成功就不是一句空话了!”
29.2 设计模式总结
大B:“刚毕业的大学生面临人生的这一大转折。要好好准备,去迎接机遇与挑战。现在我们就来聊聊设计模式吧。学了这么久的设计模式,你有什么感想吗?今天我们来总结一下设计模式吧。”
小A:“刚开始学习设计模式的时候,感到这些模式真的非常抽象。在设计过程中,我发现了很多设计模式的用处,也确实应用了很多设计模式,这让我越来越感到设计模式的重要性。”
大B:“设计模式是个好东西,它给出了很多设计中的技巧与思路,对于很多优秀的设计,它加以总结与提炼。设计模式并非是人拍脑瓜想出来的,而是他们搜集了其他人优秀的设计,加以整理出来的,他们不是这些模式的创造者,仅仅是整理者。”
小A:“应用设计模式还给我们带来了很多好处。”
大B:“是啊!软件将变得更加灵活,模块之间的耦合度将会降低,效率会提升,开销会减少。更重要的,设计模式就好像美声唱法中的花腔,让你的设计更加漂亮。总的来说,设计模式似乎将软件设计提升到艺术的层次。”
小A:“设计模式已经被广泛的应用了,在现在很多的图形界面框架都使用了MVC模式,大量跌代器模式的应用,彻底改变了我们对集合的操作方式。不仅如此,应用了设计模式的设计,往往被看成为优秀的设计。这是因为,这些设计模式都是久经考验的。”
大B:“在学习和使用设计模式的时候,往往出现一个非常严重的误区,那就是设计模式必须严格地遵守,不能修改。但是设计模式不是设计模型,并非一成不变。正相反,设计模式中最核心的要素并非设计的结构,而是设计的思想。只有掌握住设计模式的核心思想,才能正确、灵活的应用设计模式,否则再怎么使用设计模式,也不过是生搬硬套。”
小A:“当然,掌握设计模式的思想,关键是要仔细研究模式的意图和结构。一个模式的意图,就是使用这个设计模式的目的,体现了为什么要使用这个模式,也就是需求问题。”
大B:“是啊!这个模式的结构,就是如何去解决这个问题,是一种手段、一种经典的解决方法,这种解决方法只是一种建议。两个方面结合起来,明白为什么需要设计模式,同时明白了如何实现这个模式,就容易抓住模式的本质思想。”
小A:“在抓住意图和结构的基础上,实践也是掌握设计模式的必要方法。”
大B:“当然,设计模式必须在某个场景下得到应用才有意义,这也是为什么要提供大量的例子用来说明模式的应用场景,这实际上是提供了一种上下文环境。学外语不是要强调‘语言环境’么,学习设计模式也是这样。”
小A:“嗯!是的。”
大B:“看到网上很多人在讨论设计模式,他们确实很有创意,满嘴都是模式的名字,恨不得写个Hello World都要应用到设计模式。设计模式确实是好东西,但是,中国有句古话叫作物极必反,即便是按照辩证法,事物总要一分为二的看。”
小A:“是啊!我们说设计模式的目的是为了让软件更加灵活,重用度更高。”
大B:“但是,某种意义上,设计模式增加了软件维护的难度,特别是它增加了对象之间关联的复杂度。”(www.xing528.com)
小A:“嗯。对!”
大B:“我们总说,重用可以提高软件开发的效率。如果你是大牛,你自然希望你的设计可以被反复使用10000年,那就是:当世界毁灭的时候,你的设计依然存在。然而,现实是一个系统的设计往往在5年之内就会被抛弃,这是因为:1、软件技术产生了新的变化,使用新的技术进行的设计,无论如何都比你的设计好;2、硬件环境发生了很大变化,你的设计里对开销或者效率的追求已经没有意义了;3、新的大牛出现了,并且取代了你的位置。”
小A:“应用设计模式会导致设计周期的加长,因为更复杂了,但是很多项目还在设计阶段就已经胎死腹中,再好的设计也没有发挥的余地。”
大B:“当我们向设计模式顶礼膜拜的时候,我们还必须清醒地看到软件生产中非技术层面上的东西往往具有决定性作用。理想固然崇高,但现实总是残酷的。如何看清理想与现实的界限,恐怕是需要我们在实践中不断磨砺而体会出来的。在看完设计模式后,不妨反问以下自己,这些模式究竟能给你带来什么?”
29.3 常见的23个设计模式概念
小A:“所有结构良好的面向对象软件体系结构中都包含了许多模式。”
大B:“实际上,当我们评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于理解,其程度远远超过了未使用模式的体系结构。”
小A:“喔。”
大B:“这23个设计模式便是总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。”
1、Abstract Factory 抽象工厂模式——提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2、Adapter 适配器模式—–将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
3、Bridge 桥接模式——将抽象部分与它的实现部分分离,使它们都可以独立地变化。
4、Builder 生成器模式——将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
5、Chain of Responsibility 职责链模式——为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
6、Command 命令模式——将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
7、Composite 组合模式——–将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
8、Decorator 装饰模式——动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。
9、Facade 外观模式——为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
10、Factory Method 工厂方法模式——定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。
11、Flyweight 享元模式——运用共享技术有效地支持大量细粒度的对象。
12、Interpreter 解释器模式——给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。
13、Iterator 迭代器模式—–提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
14、Mediator 中介者模式——用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
15、Memento 备忘模式——在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。
16、Observer 观察者模式:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
17、Prototype 原型模式——用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
18、Proxy 代理模式:为其他对象提供一个代理以控制对这个对象的访问。
19、Singleton 单态模式——保证一个类仅有一个实例,并提供一个访问它的全局访问点。
20、State 状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
21、Strategy 策略模式——定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
22、Template Method 模板方法模式——定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
23、Visitor 访问者模式—–表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。