关于设计模式…Design Pattern
   追求永恒的美
1.1 “模式”一词的起源

  “每个模式描述了: 一个在我们周围反复出现的问题, 然后是针对这个问题的解决方案。

  这样,其他人可以无数次地反复 使用这种解决方案,不需要第二 次再去思考该如何解决这类问题”

        ---     Christopher Alexander, 1979
  Christopher Alexander 最初是在建筑行业、小镇建设中提出来的

  在软件工程中,设计模式是建立在类、对象、接口这些概念的上面,而不是砖块、 门

  In SE, design patterns are in terms of objects and interfaces, not walls and doors
1.2 GoF(Gang of Four)设计模式

  Design Patterns – Elements of Reusable

  Object-Oriented Software by Erich Gamma, Richard Helm , Ralph Johnson & John Vlissides
  Addison-Wesley, 1995. (As CD, 1998) 简称 GOF,“四人帮”
  First systematic software pattern description 第一本系统性引入软件设计模式
  注意: 设计模式不是他们“创建”出来的,而是他们 在大量软件中“提炼”出来的
1.3 Essential Elements of Design Patterns

   设计模式的特点

     描述了一个反复出现的问题 describes a problem which occurs over

     描述了核心的解决方案 describes the core of the solution

     其他人可以无数次地使用这个方案解决类似的问题

   模式的定义,四个本质的构成 four essential elements

     模式的名字 Name of the Pattern

     模式解决的问题 The Problem

     模式提出的解决方案 The Solution

     应用模式的后果、折衷考虑的问题 Consequences, tradeoffs

   注意点

     解决方案针对反复出现的问题 a solution to a recurrent problem

     不是一个“具体”的解决方案,而是一个抽象的方案

      not a “concrete” solution, but an abstract version of it
1.4 模式的作用 Patterns help to

   解决某些特殊的设计问题 solve specific design problems   

   减少重复设计的工作量 reduce the need for redesign

     重用设计方案比重用代码更有意义,它会自动带来代码重用

     模式在实践中可作为模板使用 act as templates

   把专家的知识、经验传递给新手 pass on knowledge from experts to novices

   为设计提供共同的词汇 Common Vocabulary

     每个模式名就是一个设计词汇,其概念使得程序员间的交流更加方便

   编写开发文档更加容易 Easy Documentation

     在开发文档中采用模式名称可以让其他人更容易理解设计师的想法,为什 么这么做?做了些什么?

   应用设计模式可以让系统重构变得容易 Easy refactor
1.5 关于模式的误解

   模式不是 Patterns are not ...

     类 Classes

     函数库 Libraries

     功能包 Packages

     宏定义 Macros

     高阶函数 Higher-order functions

       一个高阶函数可以将函数作为参数,也可以返回一个函数

     模板类 Template classes

   但是,模式确实是由这些元素构成的

    However, some of these could conceivably(令人信服地) capture some design patterns

8.1 GOF 设计模式:关于设计模式的更多相关文章

  1. GOF 23种设计模式目录

    经典的gof 23种设计模式,目录大纲查看. 1. Singleton(单例模式) 保证一个类只有一个实例,并提供访问它的全局访问点. 2. Abstract Factory(抽象工厂模式) 提供一个 ...

  2. java设计模式------工厂设计模式

    总结 以上就是工厂模式的基本实现和详细说明.包括了简单工厂模式.工厂方法模式.抽象工厂模式.我们可以基于需求来选择合适的工厂模式 基本概念:为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来 ...

  3. 【51】java设计模式-工厂设计模式剖析

    工厂设计设计模式的分类: 工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品: 2)工厂方法模式(Factory Method) ...

  4. Java设计模式--单列设计模式

    设计模式:解决某一类问题行知最有效的方法.java有23种设计模式 单列设计模式: 解决一个类在内存中只存在一个对象 思路:(要保证对象的唯一性) 1.为了避免其它程序建立该对象,先禁止替他类创建改对 ...

  5. 图解Java设计模式之设计模式七大原则

    图解Java设计模式之设计模式七大原则 2.1 设计模式的目的 2.2 设计模式七大原则 2.3 单一职责原则 2.3.1 基本介绍 2.3.2 应用实例 2.4 接口隔离原则(Interface S ...

  6. 图解Java设计模式之设计模式面试题

    图解Java设计模式之设计模式面试题 1.1 Java设计模式内容介绍 1.1.1 先看几个经典的面试题 1.1.2 设计模式的重要性 1.1 Java设计模式内容介绍 1.1.1 先看几个经典的面试 ...

  7. 设计模式课程 设计模式精讲 7-2 建造者模式Coding

    1 代码演练 1.1 建造者模式演练 1.2 静态内部类演练建造者模式(链式调用) 1 代码演练 1.1 建造者模式演练 需求: 根据讲师提供的课程名称,课程ppt,课程视频,课程手记,课程问答 制作 ...

  8. 设计模式 | Catalog设计模式,抵御业务方需求变动

    大家好,这是一个全新的专题--设计模式. 其实可以选择的专题还有好几个,为什么选择设计模式呢?原因也很简单,首先是设计模式简单.易学.干货的文章固然好,但是普适性往往不强.另外一个很重要的点就是设计模 ...

  9. GoF 23种设计模式概述

    本文的结构: 一.设计模式总览 二.创建型设计模式 Creational Patterns 三.结构型设计模式 Structural Patterns 四.行为型设计模式 Behavioral Pat ...

  10. GOF 23种设计模式

    设计模式目录 创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Sin ...

随机推荐

  1. CentOS 7 Sersync+Rsync 实现数据文件实时同步

    rsync+inotify-tools与rsync+sersync架构的区别? 1.rsync+inotify-tools inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪 ...

  2. visualization of filters keras 基于Keras的卷积神经网络(CNN)可视化

    https://adeshpande3.github.io/adeshpande3.github.io/ https://blog.csdn.net/weiwei9363/article/detail ...

  3. Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群

    ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...

  4. 介绍Kubernetes监控Heapster

    什么是Heapster? Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS,Kubernetes有个出名的监控agent—cAdvisor.在每个kubern ...

  5. Xshell连接Linux慢问题解决办法

    由于各种原因,经常更换网络环境,然后发现,每次更换网络环境后,xshell连接虚拟机的rhel或者CentOS都几乎是龟速.... 今天专门查了一下解决方案: 原来是ssh的服务端在连接时会自动检测d ...

  6. vue 重构项目第一步(vue-cli跟bootstrap)

    一.先安装jq跟bootstrap 1.因为bootstrap依赖jq,先安装jq----->npm install jquery@1.11.3 --save-dev   ----->可以 ...

  7. react中对于context的理解

    一.context旧版的基本使用 1.context的理解 当不想在组件树中通过逐层传递props或state的方式来传递数据时,可使用context来实现跨层级的组件数据传递. 2.context的 ...

  8. Oracle GoldenGate 18.1发布

    软件下载地址:https://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html 文档下载地址: https:/ ...

  9. 算法(第四版)C# 习题题解——1.4

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...

  10. Excel导出采用mvc的ExcelResult继承遇到的问题Npoi导出

    #region 构建Excel文档 //创建Excel文件的对象 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSS ...