Skip to content

设计的语言 #18

@sisisimao

Description

@sisisimao

图解

图解由克里斯托佛·亚历山大最早提出。它是一些具体关系的抽象模式,这些具体关系把具有相互影响和冲突的小系统分离出来,独立于其它影响和冲突。软件设计中的“高内聚,低耦合”思想即源于此。

图解之间抽象而独立:

  • 因此可以对其逐一研究和改进,累积成型;
  • 可以它们来创造的设计就不止一个,这些设计是同一集合模式的自由组合。

建筑设计模式

  • 克里斯托佛·亚历山大从大量的建筑和规划的实践中提炼出了253种建筑模式,每一个模式描述建筑环境中一再反复发生的某个问题,并提供解决这一问题的关键手段。

  • 模式有层级,最大的建筑模式如区域和城镇,接下来是邻里、住宅、房屋和凹室等,最后是构造细节。

  • 253个模式创造了一个完整区域的有条有理的蓝图。人们可以通过使用这些模式的一部分,组合出数以百万计的公园、小路、住宅、车间或花园等等。

  • 模式案例:换乘站(模式34)

    本模式阐明形成公共交通网(模式16) 的一些要点。在每一交通区的中心,保证能有换乘站,从而有助于完善地方交通区(模式11) 。在换乘站,人们能从自行车或地方小公共汽车换乘长途运输线的车辆。

    为了保持稳定的乘客流量,换乘站必须使乘客感到方便、容易利用。它应该遵循如下原则:

    • 特别需要公共交通的人的工作地点和住宅应位在换乘站周围。
    • 使换乘站的内部和外部的行人网络成为一个连续的整体,比如,停车场设在和换乘站一边,用桥梁和地下通道让换乘时的步行连续。
    • 要使不同交通方式间的换乘距离缩小到300英尺,绝对最大值不超过600英尺。
      image

软件设计模式

  • 设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学。

  • 同建筑设计模式一样,软件设计模式中的每一个模式都用来解决一个在我们周围不断重复发生的问题,这样,我们就能重复使用这个方案。

  • 模式案例:适配器模式

    • 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
    • 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这正像是本模式所做的事情。
    • 具体模式如下图。Adaptee类并没有sampleOperation2()方法,而客户端则期待这个方法。为使客户端能够使用Adaptee类,提供一个中间环节,即类Adapter,把Adaptee的API与Target类的API衔接起来。
      image

参考资料

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions