[Design Pattern] 设计模式0_概述1

什么是设计模式

设计模式是前人对编程的总结。 在所谓前人栽树,后人乘凉,学习前人踩过的坑是提高自己编程实力的一个好途径。

为什么要学习设计模式

  原因大致如下:

  * 让自己写出更加高内聚,松耦合的代码

  * 让自己开发出“可维护,可拓展”的代码

  * 让自己以后快速入门一个API

  * 学习Spring的必备前置技能

如何学习设计模式

学习设计模式不可避免必然是知道现在主流设计模式的来源和种类。

现在主流的设计模式有23种,来源于GOF。

GoF是其实书籍《Design Patterns:Elements of Reusable Object-Oriented Software》的四位大牛的缩写Gang of Four(四人帮)。这四个大牛分别为: Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。

学习设计模式的就是要学习,为什么会产生该种设计模式,这种设计模式是为了解决什么问题,该设计模式的UML类图是怎么样的?什么时候可以用这种设计模式。

设计模式内容一览

对接下来学习的设计模式,大纲为:

六大原则

六大原则是设计模式的总纲领,23种设计模式都遵循该六大原则:

  • Open Closed Principle(开闭原则)
  • Liskov Substitution Princple(LSP,里氏包换原则)
  • Dependence Inversion Principle(依赖倒置原则)
  • Interface Segregation Principle(接口隔离原则)
  • Demeter Principle (迪米特法则 - 最少知道原则)

开闭原则

开闭原则说的是对拓展开发,对修改关闭。在程序需要进行拓展的时候,不能去修改原有代码,实现一个热插拔的效果。一句话概括:为了使程序的拓展性更好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。

里氏代换原则

里氏代替原则是面向对象设计的基本原则之一。里氏代替原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,用衍生类才能够在基类的基础上增加新的行为。

依赖倒置原则

这个是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。

接口隔离原则

这个原则的意思是:使用多个隔离的接口,比使用单个接口更好。

最少知道原则

就是说:一个实体应当尽量少的于其他实体之间发生相互关系,使得系统功能模块相对独立。

合成复用原则

就是尽量少使用继承,多使用聚成和复核(这三者的概念分别是什么? 有什么区别)。

23中涉及模式及其分类

设计模式中总共有23种,按照某些标准还可以把他们分类。

| 分类 | 包含 | 备注 |

| :----- | :----- | :----- |

|创建型模式 | | |

|结构型模式 | | |

|行为型模式 | | |

原文地址:https://www.cnblogs.com/ylhong/p/11628127.html

时间: 2024-10-14 07:16:15

[Design Pattern] 设计模式0_概述1的相关文章

Design Pattern 设计模式1 - Strategy 1

实现 : Defferent Heros attack Defferently. - 不同的英雄使用不用的招数 Strategy设计的思路: 基类A,更加小的基类B,新的继承类C: 1 从基类A中抽出一个更加小的基类B 2 利用这个更加小的基类B实现不同的效果 3 把这个更加小的基类B包含进基类A中去 4 新的继承类C只需要和基类A打交道,设计不同行为,不需要理会更加小的基类B #pragma once #ifndef _STRATEGY_HEROS_H #define _STRATEGY_HE

Design Pattern 设计模式 Decorator 装饰者模式

1 设计一个基类 2 继承这个基类,并包含这个基类的一个对象 3 创建继承类的时候,初始化这个基类,因为是基类指针,所以可以是所有基类的衍生类对象,那么就可以叠加任意多个衍生类对象了. 关键是在衍生类中包含一个基类对象,然后有了继承和包含两重关系,可以使得一个类一个类对象叠加,达到装饰目的. 等于是创建了一个对象指针链表,一个一个对象发挥其相应的作用. 下面程序装饰一个桌子,同时包含释放内存的处理. 关键要知道基类的析构函数必须使用虚函数,为什么? 1 如果基类不是析构函数,那么如果衍生类中包含

DP什么意思 design pattern 设计模式

DP  design pattern 大话设计模式  中的DP 是设计模式的意思 设计模式的书 ,最经典最原始的就是 GOF 的<设计模式>了. 设计模式的书基本上大多是以这 20 多个模式分开讲.含<大话设计模式> 学了 OOL 写的程序基本上是 OB 的. 只有慢慢掌握了 DP 才能写出真正的 OO 程序. 思想 -> 设计原则 -> DP -> OOD

Design Pattern设计模式

一.Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点     二.Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类.     三.Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类.     四.Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示.   

设计模式(Design pattern)概述

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结, 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性 设计框架 可复用面向对象软件系统一般划分为两大类:应用程序工具箱和框架(Framework) 我们平时开发的具体软件都是应用程序 而框架是构成一类特定软件可复用设计的一组相互协作的类 框架通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具体应用实现者能集中精力于应用本身的特定细节. 框架主要记录软件应用中

简单工厂设计模式(Simple Factory Design Pattern)

[引言]最近在Youtub上面看到一个讲解.net设计模式的视频,其中作者的一个理解让我印象很深刻:所谓的设计模式其实就是运用面向对象编程的思想来解决平时代码中的紧耦合,低扩展的问题.另外一点比较有见解的是,区分了设计模式(Design Pattern),结构模式(Architecture Pattern),架构类型(Architecture Style). 如下图所示 Design Pattern:是基于代码层面的,就是针对解决功能模块之间的问题而采用恰当的设计模式,比如依赖注入,简单工厂,适

State Design Pattern 状态设计模式

设置好内部状态,然后根据不同的函数作为行为模式,进行状态转换. 有点像Finite Automata算法,两者的思想是一样的. 会Finite Automata,那么这个设计模式就很容易了. #pragma once #include <stdlib.h> #include <math.h> #include <random> #include <time.h> enum STATES { FULLY_RENTED, WAITING, GOT_APPLICA

Design Pattern Prototype 原型设计模式

Prototype设计模式其实就是利用一个深拷贝的功能,在原有的类中,通过一个clone函数,创建一个新的类,并可以利用好原有的数据. 这样可以轻易clone出多个新的对象操作,而且都有各自的内存空间. #include <string> #include <iostream> using namespace std; class MultiData { protected: bool b; char c; string s; int a; public: virtual Mult

State Design Pattern 状态设计模式2

其实本设计模式可以实现一些像人工智能式的问答. 这个跟人回答问题差不多,根据不同的问题作出不同的回答,而且在不同的状态,也会作出不同的回答. 如果有大量的数据,那么就可以作出千变万化的问答效果来哦. #include <stdio.h> enum STATE { HUNGARY, EAT, FULL }; class State { STATE myState; public: State(STATE s = HUNGARY) : myState(s) { } void eat() { swi