zoukankan      html  css  js  c++  java
  • 【SICP归纳】5 泛型运算符

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

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

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

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



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


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


    版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

  • 相关阅读:
    Java实现 LeetCode 30 串联所有单词的子串
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 27 移除元素
    字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786100.html
Copyright © 2011-2022 走看看