【SICP归纳】5 泛型运算符

关于数据抽象,有两个很重要的思想。一是在构建一些水平的抽象障碍在这个系统中。用某些对象来代换这些单独使用的抽象屏障。二是当需要使用某种形式的数据对象时,往往可以由其他人来将其实现,而我们并不需要知道具体操作。这都是在数据抽象方面非常强大的编程方法。

但是这还不足以完成一个真正复杂的系统。在这里的问题出在“其他人”,作者常举的例子是Georges。归结来说,有很多人都工作在这个系统上,但所有的这些设计表达式很显然是不兼容的。问题是所有的整个系统却又不可能由一个人来完成,可又无法让所有的实现不能互相干扰。在以某种方式设计系统时,我们就不仅仅需要这些水平的障碍,还需要某种形式的垂直障碍,让这些实现方法分割开来。

那么该怎么做呢,一种方式是,每个人都得去改变自己的设计风格去迎合这个系统。也这是人们经常尝试却又永远无法高效工作的。(Lisp太多伟大的特性,让程序员更加有效的编程。这些理念并不新颖,Lisp几十年前就有了,但有多少其他语言能够做到呢。当然也并非其他语言一无是处,我只是和前辈们一样觉得学习SICP和Lisp能够变得更强大。)而另一种方式,则是以某种方式来进行安排,做一些垂直的抽象障碍。例如当被问到人事记录中的名字时,不论以何种可能出现的输出格式,最终都会得到一个正确的名字。这就比如当打开一个国际网站时,不论其中的过程如何,最终得到的网页都会是我们所需要的语言。同一个网站,可能有英文、简体中文、繁体中文、法文、德文等等,也许不同的程序员负责不同的语言以及不同的见面,但最终通过垂直的抽象屏障将其分离开来,所以我们并不会在一个网页中看到多种语言同时混杂在一起的界面。

更重要的是,如果要设计一个系统,以便下一次有新的部门被纳入公司时,他们不必在已经关于这个系统做好的系统中做些重大的改变,并且公司的其他部门也不必去做重大的改变来让新部门融入进来。这才是我们应该考虑的问题,而不是一股脑的去改变所有的已写好的代码和结构。也就是分布式的一个浅显示例了,3.4节的并发也是一个很重要的理念。书中第135页的类型塔很有意思,仿佛就像类的继承一般。



感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。


为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值