设计模式概述

简介: 设计模式概述

一、设计模式概念

软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用

二、设计模式的分类

  • 创建型模式

用于描述 “怎么创建对象”,主要把对象的创建和使用分离,包括单例、原型、工厂、抽象工厂、建造者

  • 结构性模式

用户描述如何将类或者对象组成更大的结构,代理、适配器、桥接、装饰、外观、享元、组合

  • 行为型模式

用于描述类和对象之间怎么互相完成单个对象无法完成的任务,包括模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器

三、UML

统一建模语言,用来设计软件的可视化建模语言,包括用例图、类图、对象图、活动图、时序图、状态图、协作图、构件图、部署图9中图,其中类图是显示模型的静态结构图、特别是模型中存在的类、类的内部结构以及他们与其它类的关系。设计模式中使用类图能更见可观的认识设计模式

四、类图的表示方式

1、类的表示

在uml图中,类使用包含类型、属性、方法且带有分割线的矩形表示,如下一个Person类图,包含name、age2个属性一级work方法

属性或方法前的加减号表示属性、方法的可见性

-:表示price

+:表示public

#:表示protected

属性完整表示方式:可见性 名称 :类型 [-缺省值]

方法完整表示方式:可见性 名称 (参数泪飙):返回类型

2、类之间的关系表示

关联关系可以表示类和另一个类对象之间的联系、比如老师和学生、丈夫和妻子等。分为一般关联关系、聚合关系、和组合关系

2.1、一般关系

一般关系可以分为单向关联、双向关联、自关联

单向关联

类图中用一条带箭头的实线表示,如下每个user都有一个身份证,这通过user类持有一个类型为card的成员变量类实现

双向关联

用一个不带箭头的直线表示双方各自持有对方类型的成员变量,如下user持有一个List<Teacher>,表示每个user可以有多个老师,在teacher中持有一个List<user>表示一个老师有多个学员

自关联

用一个带有箭头且指向自身的先表示,如下表示Node类包含类型为Node的成员变量

2.2、聚合关系

2.3、 组合关系

2.4、依赖关系

2.5、继承关系

2.6、实现关系

五、软件设计原则

为了是程序的扩展性好、易于维护和升级,程序猿要尽量根据6条原则来开发程序

1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进⾏拓展的时候,不能去修改原有的代码,实现⼀个热插拔的效果。 所以⼀句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使⽤接⼝和抽象类,后⾯的具 体设计中我们会提到这点。

2、⾥⽒代换原则(Liskov Substitution Principle) ⾥⽒代换原则(Liskov Substitution Principle LSP)⾯向对象设计的基本原则之⼀。 ⾥⽒代换原则中说,任何基类 可以出现的地⽅,⼦类⼀定可以出现。 LSP是继承复⽤的基⽯,只有当衍⽣类可以替换掉基类,软件单位的功能不受到影响时, 基类才能真正被复⽤,⽽衍⽣类也能够在基类的基础上增加新的⾏为。⾥⽒代换原则是对“开-闭”原则的补充。实现“开-闭”原则 的关键步骤就是抽象化。⽽基类与⼦类的继承关系就是抽象化的具体实现,所以⾥⽒代换原则是对实现抽象化的具体步骤的规 范。—— From Baidu 百科

3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,

具体内容:针对接⼝编程,依赖于抽象⽽不依赖于具体。

4、接⼝隔离原则(Interface Segregation Principle) 这个原则的意思是:使⽤多个隔离的接⼝,⽐使⽤单个接⼝要好。还是⼀个降低类之间的耦合度的意思,从这⼉我们看出, 其实设计模式就是⼀个软件的设计思想,从⼤型软件架构出发,为了升级和维护⽅便。所以上⽂中多次出现:降低依赖,降低耦 合。

5、迪⽶特法则(最少知道原则)(Demeter Principle) 为什么叫最少知道原则,就是说:⼀个实体应当尽量少的与其他实体之间发⽣相互作⽤,使得系统功能模块相对独⽴。

6、合成复⽤原则(Composite Reuse Principle) 原则是尽量使⽤合成/聚合的⽅式,⽽不是使⽤继承


相关文章
|
9天前
|
设计模式 缓存 算法
设计模式概述
设计模式概述
41 0
|
9月前
|
设计模式 算法 程序员
设计模式之设计模式概述
设计模式之设计模式概述
79 0
|
9月前
|
设计模式 开发框架 Java
设计模式简介【Java设计模式】
设计模式简介【Java设计模式】
55 0
|
10月前
|
设计模式 C++
设计模式简介
设计模式简介
53 0
|
设计模式 开发框架 算法
设计模式概述以及 23种设计模式的介绍
设计模式概述以及 23种设计模式的介绍
380 0
设计模式概述以及 23种设计模式的介绍
|
设计模式 算法 uml
设计模式概述
主要介绍软件设计的七大原则,接着在第二章我们简要介绍设计模式的三种分类,让我们站在一定的高度对设计模式有整体的把握,第三章UML类图帮助我们更好的看懂设计模式的代码。
设计模式概述
|
设计模式 存储 消息中间件
23种设计模式汇总概述之行为型模式
行为型模式:类和对象如何交互,及划分责任和算法。
125 2
23种设计模式汇总概述之行为型模式
|
设计模式 缓存 安全
23种设计模式汇总概述之创建型模式
创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。
177 1
23种设计模式汇总概述之创建型模式
|
设计模式 存储 安全
23种设计模式汇总概述之结构型模式
结构型模式:把类或对象结合在一起形成一个更大的结构。
151 1
23种设计模式汇总概述之结构型模式
|
设计模式 数据可视化 程序员
《设计模式详解》设计模式概述、UML
设计模式前置知识:概述、UML
265 0
《设计模式详解》设计模式概述、UML