不要老谈“设计模式”
2009-06-28 12:14
197 查看
我这人特懒,从小到大都很讨厌文科(现在后悔了),写文章也很菜,虽然在女朋友鞭策下,比以前好了一点点。我个人崇拜老子的“道法自然”,它告诉我 们的就是凡事都有一个规律,你要“无违”,就是不要违反自然规律,一旦违反了,就会受到惩罚。第一次听到这个词的时候,就是因为这个词引起的,因为我不喜 欢学习《中国传统文化》,老逃课,然后挂了,就重修了。我们老师问我,为什么你们学计算机的人把这门课给挂了呢(一般老师都认为学习计算机的人聪明,因为 热门,考生分数高啊),我很生气的回答,“因为这门课没有用。”,老师急了,给我说“新加坡、日本治理国家和公司,用的理论就是孔子的思 想......”,后面的话没有记住,但是被老师的话震了一下,试着努力听这门课了。后来发现这门课挺有意思的,还朦朦胧胧听到老子的“道法自然”思想, 不过,我那会理解不了。初步体会到“道法自然”的含义是在我有女朋友之后。我犯错后,我女朋友肯定生气,她生气了肯定要我麻烦。后来,不快遇到多了,就慢 慢明白了,凡是做事违反规律的,必将受到处罚,于是我开始慢慢探索各种规律了。当然,包括编程之道。 接下来我将谈一下关于“设计模式”。这年头,是个程序员,要是不知道“设计模式”,绝对被人鄙视孤陋寡闻。一时间,“设计模式”高手就是编程高手 了。对于一些刚学习编程的人,他们都乐于谈论关于“设计模式”,他们会津津乐道某个设计模式,并为在某些代码上发现了一个“设计模式”的妙用而兴奋。我这 人不怎么喜爱设计模式,因为我懒,要学习设计模式,我还得去学习设计模式的背景,太费脑子了,而且关键是我用不着!当然,我在这里不是要反对“设计模式 ”,我也大体的把设计模式的书粗略过了一下,不过能说上来并应用的也就工厂、适配器、迭代器模式了,更不清楚这么多模式他们之间的各种关联性等等。
我在这里想说的就是,“设计模式”犹如精辟的剑招,每一种模式都能有效“克制敌人的某一个招数”。不过遗憾的是,我们很少遇到只拥有某一中招数的 敌人,我们经常遇到各种各样的敌人,他们使出各种各样的招数,即使我们完全学了所有设计模式,也难以招架。其实,大家在海阔天空谈论设计模式的时候,往往 容易忽略了设计模式的背景。在我看来,设计模式出现的原因是如果开发人员设计的程序比较僵硬,不自然,那么开发和维护就非常痛苦。由此,产生了面向对象的 设计原则。OOP最重要的原则就是SRP,即单一职责原则;其次是OCP原则,即开闭原则。你可以发现,基本上,每一个模式都很符合OOP的这些原则。设 计模式是在面向对象应用上面发展的必然结果,它追求程序变得更加”道法自然“,以避免开发人员受编程之苦。当你从面向对象学习起到开发很多项目之后,你也 会慢慢发现OOP原则和满足这些原则的设计模式的。如果一味的追求设计模式,而少了编程经验,根本无法体会面向对象的精髓,只能是硬着学一些招数而已。
因此,我给高谈“设计模式”的人的建议就是:(1)C#\C++\Java中的每一个关键字你们都掌握了吗? 如果没有的话,赶紧行动,告诉你自己Override、Virtual、Private/Protected/Public...等关键字的意义,当你能 够娴熟使用这些关键字的时候,你算是初步了解了面向对象的基本要素了。(2)对接口的把握程度,”多重继承“是接口最没有意义的用处了,如果你只知道这层 含义,需要多做项目。(3)循序渐进,多做实践。在实践同时,你可以学习设计模式。通过设计模式,你可以给自己制定目标,就是你以后也可以发明类似的设计 模式。(4)道法自然,如果程序设计的看上去很自然,那这些程序就是好程序了。
我在这里想说的就是,“设计模式”犹如精辟的剑招,每一种模式都能有效“克制敌人的某一个招数”。不过遗憾的是,我们很少遇到只拥有某一中招数的 敌人,我们经常遇到各种各样的敌人,他们使出各种各样的招数,即使我们完全学了所有设计模式,也难以招架。其实,大家在海阔天空谈论设计模式的时候,往往 容易忽略了设计模式的背景。在我看来,设计模式出现的原因是如果开发人员设计的程序比较僵硬,不自然,那么开发和维护就非常痛苦。由此,产生了面向对象的 设计原则。OOP最重要的原则就是SRP,即单一职责原则;其次是OCP原则,即开闭原则。你可以发现,基本上,每一个模式都很符合OOP的这些原则。设 计模式是在面向对象应用上面发展的必然结果,它追求程序变得更加”道法自然“,以避免开发人员受编程之苦。当你从面向对象学习起到开发很多项目之后,你也 会慢慢发现OOP原则和满足这些原则的设计模式的。如果一味的追求设计模式,而少了编程经验,根本无法体会面向对象的精髓,只能是硬着学一些招数而已。
因此,我给高谈“设计模式”的人的建议就是:(1)C#\C++\Java中的每一个关键字你们都掌握了吗? 如果没有的话,赶紧行动,告诉你自己Override、Virtual、Private/Protected/Public...等关键字的意义,当你能 够娴熟使用这些关键字的时候,你算是初步了解了面向对象的基本要素了。(2)对接口的把握程度,”多重继承“是接口最没有意义的用处了,如果你只知道这层 含义,需要多做项目。(3)循序渐进,多做实践。在实践同时,你可以学习设计模式。通过设计模式,你可以给自己制定目标,就是你以后也可以发明类似的设计 模式。(4)道法自然,如果程序设计的看上去很自然,那这些程序就是好程序了。
相关文章推荐
- [转贴] 不要以为使用了模式就是好设计
- 不要使用不理解或不适用的架构或设计模式
- 【设计模式】外观模式——“知道有它就行了,内容不要你懂。”
- 设计模式开篇-不要滥用设计模式
- 请不要滥用设计模式——SingleTon篇
- NDatabase 入门,简单使用 增删改查。让NDatabase带你脱离ADO.net,各种SQL 语句,各种DBMS,各种CRM,IOC之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!
- 不要设计模式
- 不要为了用设计模式而用设计模式
- [转贴] 不要以为使用了模式就是好设计
- 设计模式(1) - 工厂方法
- java策略设计模式
- Java设计模式之模板方法模式(Template Method)
- 【设计模式】之一Memento
- as3游戏设计笔记:单例模式
- Java 设计模式—单例模式
- 设计模式——构建者模式
- 学习JavaScript设计模式(代理模式)
- Java设计模式百例 - 迭代器模式
- Android设计模式--Builder模式
- Java设计模式一 责任链模式