`
happmaoo
  • 浏览: 4333255 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

读易[15]·用软件的角度理解易经

阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

自从我学习程序设计开始,就不断地听到大家谈论面向对象。在最开始接触C++时,确实被它的OO特性迷住了,相比之前用过的C语言更加丰富多彩。想当初,经常因为写出了一个类而暗自自豪半天。

现在做程序员也有些年头了,回过头来看以前似乎领悟到的OO思想又有了一些新的感悟。

一、代码之外的对象

提起OO,大家都会想到class关键字。以前老师这么教的,平时自己也是这么用的。虽然有些语言中的表现不一样,但本质上都是差不多的。刚开始时,说OO是一种技术;后来说OO是一种潮流;再后来说OO是一种信仰;后来的后来说OO是一种思想,总之是越说越玄。
不过有一点却是肯定的,我们可以将OO思想用在不支持OO特性的语言中。比如说,学了C++的人去写C程序,很可能写出来的还是C++风格的。

进一步推理,OO思想可以在语言之外体现出来。

年初就开始做插件系统方面的东西,做到现在系统中的插件有好几百个。对于这样的系统来说,插件就相当于非插件系统中的对象。没有谁规定对象必须是 class创建出来的。在以前写的文章中,有朋友的评论说到,这种情况可以叫做“对象模型(Model)”,和我这里说的是一个意思。

插件分为代码和配置两个部分,代码实现插件的业务,配置文件处理插件特性和插件之间的交互关系。可以说,在插件系统中,代码加配置组成的那个东西也能叫做“对象”,也就是代码之外的对象。

当我们能将OO思想摆脱代码的局限时,那么就能拥有更加广阔的思考空间了。

二、组合优于继承

封装、继承、多态是面向对象的三大特性。对于插件来说,封装是能很好地表现出来,但对于继承和多态却非常难实现了。至少我现在还没有看到有人将插件做成支持继承的。

以前有人问我觉得面向对象的三个特性中哪一个最有意思。当时我回答是多态,因为它最灵活。多态是和继承绑定的,继承是一种强耦合,也就是说派生类和基类不 可解耦。在有些时候继承和多态能带来意想不到的好处,但更多时候我们需要用组合来代替继承,以此获得更大的灵活性,尤其是站在系统的层面。

比如说有两个模块功能非常接近,如果按照派生的思路,在这两个模块之上提出一个基类,继承两个子类来完成具体的功能。对于代码之中的对象这样做没什么问 题,但对于代码之外的对象,只能采用组合来代替派生的思路了。做法是将两个模块的公用部分做成一个公用子模块C,不同部分做成A、B两个模块。A与C组合 起来生成第一个模块,B与C组合起来生成第二个模块。
还有一种解决方法就是用配置来处理模块特性,大家可以参考我以前写过的文章。

在设计模式中也强调“组合优于继承”。

三、好积木的要点

将软件模块比作积木,我们程序员就是玩积木的人了。各种各样的类库和框架、加上形形色色的控件,都是我们玩的积木。在插件系统中,插件就是积木。本文的着重点是插件系统。

好的“积木”需要具备以下的几点:

1、可插拔性,动态加载
2、外观可调
3、显示位置可配置指定
4、统一的列表管理
5、元素之间可通讯

上面介绍一些基本的要点,也是插件系统需要解决的若干个问题。上面的这些问题在以前的文章中已经简单介绍过。解决上述问题的方法多种多样,很感谢那些和我分享自己解决方法的朋友们:)
在现在的项目中,最关键的一点就是“配置”,这就要求满足1、2、3点,而4、5点则是将插件组装成完整系统的必备因素。

四、什么是技术含量

粗略地可以将程序员分成两类:做积木、与玩积木的人。

做积木的人指的就是那些自己写控件、插件的人,玩积木的人指的就是将各种各样控件或插件组装成系统的人。在业界大多数人都会认可那些自己写控件的,对于“只会拖拖控件”的程序员则不屑一顾。

我们很难说做积木与玩积木的人哪一个水平高,因为需要的是两种不同的能力。做积木的人需要对底层计算机技术有深刻的了解,而玩积木的人则需要对业务、用户需求和整体框架有清楚的认识。两个层面的人都需要有优化的意识。

很多学生的眼中,技术含量指的就是学习系统底层知识,掌握计算机原理;但工作过一段时间,尤其是做行业软件的程序员则会有不同的看法,他们更加关注怎样来“玩积木”,同样是一门学问。这也就是设计模式在学生中很少有人知道,而算法等基础理论离职业化程序员越来越远的原因。

我们不能仅仅按照做积木和玩积木两种类型来区分技术含量,不同的工作对技术的侧重点不一样。不过在我看来,玩积木才是我真正想做的事情,也可以说是架构设计了。当然,成为一个优秀的架构师还是相当困难的。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1442072


分享到:
评论

相关推荐

    南方周易起名软件

    南方周易起名软件

    易经学习辅助软件

    这个软件既然已经无处去了,就安放在这一角,当做是纪念了罢。 为了推广易经博大精深的民族文化,这个资源也是不用分下载的。 如果有何建议或者要求,请来信至 laobo_huang@163.com 。 代码非常简单,不到400行,...

    周易起名软件

    周易起名软件是完全按照姓名学的理论来取名的软件,可以根据周易的象数来生成高分名字的软件。很多人不知道姓名学是什么,姓名学是从周易的象数理论中衍生出来的一门专业取名的学问,是以周易中易数为理论基础,经过...

    周易起名软件v15.0

    周易起名软件采用&lt;五行平衡取名法&gt;,结合宝宝姓氏、性别、生辰八字、天格、地格、人格、外格、总格、三才数理、基础运、成功运、人际关系、五行元素、好听等多种因素,真正为您的宝宝取到评分高 (99-100分)、数理...

    周易生辰八字取名软件激活码免费下载

    周易生辰八字取名软件激活码免费下载

    《易经资源学习》.mobi

    包括《连山》、《归藏》、《周易》三部易书,其中《连山》和《归藏》已经失传,现存于世的只有《周易》。《易经》被誉为诸经之首大道之源”,是中华传统文化的总纲领,蕴涵着朴素深刻的自然法则和和谐辨证思想,是...

    新周易宝宝取名软件9.0

    古人云:“赐子千金,不如教子一艺;教子一艺,不如赐子一名。”研究表明,名字将影响人的一生.宝宝名字的选择权在您手中,可是您不是电脑,不是字典,怎么能想出很多丰富多彩的...附带的周易超吉筛选功能,100万名字可选

    周易软件支持PC及手机

    手机周易占卦软件,同时支持PC(windows)以及手机(windows mobile) 运行环境:.net compact framework 2.0及以上

    周易起名软件V12.7简体中文试用版

    周易起名软件是根据宝宝个人信息,自动生成宝宝名字的一种软件,为宝宝取得100分好名字。两种模式一键生成数万个名字。 周易起名软件,取100分好名字! 经典模式:一键生成几千个精选过的好听名字 高分模式:10分钟...

    《周易起名大师》破解版——乱填注册码即可

    《周易起名大师》破解版——乱填注册码即可 《周易起名大师》破解版——乱填注册码即可

    安卓系统 周易软件 64卦速查

    安卓系统的 64卦速查 安卓 64卦 周易 易学 软件 google

    观看曾仕强易经的奥秘观后感 [易经的奥秘读后感]

    观看曾仕强易经的奥秘观后感 [易经的奥秘读后感]

    命理解真修上八字四柱算命周易-7页.pdf

    命理解真修上八字四柱算命周易-7页.pdf

    强悍豪横周易起名软件1

    4.多种方法:本软件使用了多种取名方法,比如指定取名,组合取名,成语取名,谐音取名等等,总有一种适合您。5.智能过滤:成千上万的备选姓名中,通过智能过滤功能,让您需要的姓名马上脱颖而出,省时省力。

    南方周易注册.rar

    八字、六爻、风水、奇门、姓名、择吉、合婚。... 1、八字分析(八字结构、旺衰、喜用神、档次等) 2、性格 3、婚姻 4、兄弟姐妹 5、子女 6、财运 7、事业 8、健康状况 9、祖业父母 10、后天补救 11、流年运程

    最新完整易经全文及译文.pdf

    最新完整易经全文及译文.pdf

    周易与汉字周易与汉字周易与汉字

    周易与汉字周易与汉字周易与汉字周易与汉字

    基于C程序的周易占卜软件

    本程序是基于C开发而来,简单易懂,很有助于初学者对程序的学习,本程序完整,结构清晰,娱乐性强

    宝贝起名软件 好宝宝起名软件 8.5.8 中文免费版.zip

    掌中宝周易取名软件帮助人们了解自己的姓名,提示如何取个人姓名,并推荐个人英文名,同时支持中文姓名测试。 本软件参考宝宝姓氏、性别、生辰八字、天格、地格、人格、外格、总格、三才数理等因素一次可生产数千个...

Global site tag (gtag.js) - Google Analytics