件设计公理化

软件设计公理化 

现在是一个知识过剩的时代,培养独立思考的能力远比盲目看书更重要。                                                                                                                                                        ---来自网络名言

如今设计模式就像蝗虫一样铺天盖地,任何一位时下的“大牛”都会捣腾一大堆设计模式的调调,但“灾难深重”的我们,却天天把眉毛和胡子愁在一起。我常常被迷惑,被鼓动,但是却难于深入理解什么是设计模式。设计模式是什么?是抽象化的精粹,还是设计的哲学。也许是被糊弄久了,也许是在某天,也许是更长的时间里,当我苦苦思索的时候,我猛然发现,哈!为什么我不能走实证的道路,不去想那虚无缥缈的抽象意义,而是先从设计模式的模样开始分析,就像金庸老先生的《侠客行》中的石破天,别人都在忙活着分析诗句和注解,他由于不识字,就只能看图玩。看着、看着就入了道,最后功力大增,练就了一身的绝学。虽然我无法达到身怀绝学,但是从结构的角度分析设计模式,的确让人醍醐灌顶。所以也希望将我的经验与所有“有缘人”进行分享。

 伤不起的设计模式

在过去那些汗牛充栋的设计模式书籍文章中,大多都喜欢从意图和动机开始入手,然后再告诉你,这里有一个挺牛的方法,这个方法就是xxx设计模式,然后再如清风拂面一般的教导大家,这个设计模式有什么好处,为什么牛的一塌糊涂,但是又要注意,不要玩火过度,“罂粟少量是药,多了就是毒品”,然后可以兜售到好多好多地方,可谓是娓娓道来,滴水不漏。但是,还是但是,当我狂乱惊讶过后,我怎么也无法留下深刻的印象,而且还常常把这些所谓的“招式”名堂搞混,虽然有长辈谆谆教导下才能澄清的了“马和骡子”的区别,然而,不过依然被归于了“伪牛人”一列,谈谈设计模式可以,但是要实施就漏了马脚。

后来想想原因,主要是GOF(四人帮)的那本葵花宝典式之《设计模式》太经典了,经典到连程序猿菜鸟都知道。此书可谓开天辟地,把不该告诉你的都告诉你了,都快20年了,还这样有嚼劲。当后面铺天盖地的设计模式运应而生以后,有设计模式也有反设计模式,有事实有依据,把设计模式推向高潮。

在《设计模式》中,作者们通过大量的实践中的众多的经验进行统一总结、分析以及验证并形成了创建型、结构型、行为型等23个基本的设计模式,并在书中给出了意图、适用性以及实例等。后来在行业的不断发展下,总结出更多让人眼花缭乱的设计模式以及架构模式等。总之,这些手法皆属同一门派,采用的思维方式大抵是一致的。

但是,我感觉这里的确缺少了很多东西,按照西方人的思维习惯,应该是实证更浓厚一些,是喜欢从分析入手的,任何理论都先要从公理开始,然后步步推导。但是设计模式从叫响到现在更接近东方人的思维方式,那就是从经验而来,从经验而来,先给出这个现象,然后再从我们的已有经验中去找寻答案,所谓设计没有好坏之分,只有美丑之分。所以,设计模式被称为不是发明,而是发现设计模式。这点甚好,因为我本东方人,这样的思维方式很容易就习惯了,多爽的事!但是,还是但是,这只是一只脚在走路。如果我们只能从需求和经验而来的“自上而下”的方式,一定需要一个“自下而上”的方式进行补充,这种方式就是我们需要暂时脱离这些模糊的经验,先拆开这些设计模式进行分析。苟且让我从我非擅长的“公理化”开始进行分拆,抛弃一切具体含义,从公理化的道路去看看,去尝试尝试。

连载01:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)相关推荐

  1. 连载12:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...

    信息熵观点 针对软件设计来说,我们可以将所有的设计通过结构化来表达,于是我们的所有的设计信息都可以表达成结构熵的处理.那么如果系统的结构熵越大,系统就越不稳定,系统的有序化就越小. 那么是否结构化就表 ...

  2. 连载32:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)

    线性化 其实本章节的设置就显得有些为难,按照常理需要大家针对后面的"线性化机制"一章节进行充分理解后,我们才能更好的进行线性化的数学抽象.然而又为了照顾统一在数学抽象的章节中,所以 ...

  3. 连载32:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...

    线性化 其实本章节的设置就显得有些为难,按照常理需要大家针对后面的"线性化机制"一章节进行充分理解后,我们才能更好的进行线性化的数学抽象.然而又为了照顾统一在数学抽象的章节中,所以 ...

  4. 连载13:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...

    置换的群特征 我们先来看看在计算机设计中最基本的三个置换,一个是从值到地址的置换方式,我们称为值-地址置换,一个是从地址到值的置换,我们称为地址-值置换.当然如果再加上对其值赋值为其他值操作或者对地址 ...

  5. 连载03:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)

    统一化 打破了这种集合关系,那么我们需要重新整理一下我们的思路,这些特征到底是什么关系呢?感觉有点乱. 不过没有关系,我们先跳出面向对象的原有的思维方式,我们先从计算机的最基本的处理来看,在计算机里面 ...

  6. 连载03:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...

    统一化 打破了这种集合关系,那么我们需要重新整理一下我们的思路,这些特征到底是什么关系呢?感觉有点乱. 不过没有关系,我们先跳出面向对象的原有的思维方式,我们先从计算机的最基本的处理来看,在计算机里面 ...

  7. 连载08:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...

    置换的规范和度量 所以这里可以看出置换具有统一的"可替换"属性,在第二章描述的多重继承体.包含体.包容体.以及函数对象等多个结构中其置换都具有可互联的特征,比如多重继承就是将继承置 ...

  8. 连载17:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...

    置换公理化的缺陷 虽然我浓墨重彩阐述了"置换"公理化作为软件设计中的种种优势,然而对于公理化过程来说,其本身的缺陷也是显而易见的. 首先需要明确的是:方法不是唯一的,公理化方法是处 ...

  9. 连载26:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)

    最小生成树 生成树: 如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树. 生成树是连通图的包含图中的所有顶点的极小连通子图. 图的生成树不惟一.从不同的顶点出发进行遍历,可以得 ...

最新文章

  1. 批处理编程的异类——时钟(Clock)
  2. python 回归去掉共线性_以IPL数据集为例的线性回归技术概述
  3. 小游戏_猜数_JAVA
  4. java http 状态_Java HTTP连接似乎保持打开状态
  5. scala java抽象理解_Scala - 抽象类型和隐式参数解析
  6. 2018中国C++大会精彩回顾
  7. JavaOne 2014:会议与合同利益冲突
  8. 使用VS2015编写C/C++开始步骤
  9. CSAPP--整数的表示
  10. 在HubSpot是如何应对Fat JAR困境的
  11. C++中的 .h 和 .cpp 区别详解
  12. linux 统计目录大小并按大小排序
  13. 详解C#防访问修饰符:public,private,protected,internal
  14. 下标要求数组或指针类型_算法一看就懂之「 数组与链表 」
  15. 女的喜欢OBC男的喜欢OGC的含义(转)
  16. 数据库索引键uk_数据库SQLServer
  17. MFC 消息映射的实现
  18. CAD软件查看.dwg、.dxf、.dwf、.jpeg、.jpg、.png、.gif等文件
  19. 深度贝叶斯神经网络(Deep Bayesian Neural Networks)实现方法
  20. 解密SuperWebview的一种另类方法

热门文章

  1. 手把手 php mysql_Ubuntu 12.04 搭建PHP环境(MySQL+PHP+Apache环境)手把手教程 含
  2. 浅谈计算机操作系统ppt,win7操作系统ppt
  3. 远程抄表系统设备的维修流程
  4. 使用红外温度传感器制作非接触式红外测温仪
  5. Lesson 8 几何渲染
  6. 【服务器数据恢复】Linux环境下RAID6磁盘阵列数据恢复案例
  7. Mac效率工具 HapiGo 1.0.1 Mac中文版
  8. 用python写 祝你生日快乐英文_八种祝你生日快乐英文表达,太实用了!
  9. 组件skype服务器,Skype for Business服务器管理工具 - 报表分析
  10. Apache Spark 练习七:使用Spark分析化妆品电子商务数据