设计模式概述

简介: 设计模式概述

一、设计模式概念

软件设计模式(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) 原则是尽量使⽤合成/聚合的⽅式,⽽不是使⽤继承


相关文章
|
设计模式 算法 程序员
设计模式的概述及各个模式的功能介绍
设计模式的概述及各个模式的功能介绍
119 0
|
5月前
|
设计模式 算法 Java
Java设计模式:核心概述(一)
Java设计模式:核心概述(一)
|
6月前
|
设计模式 缓存 算法
设计模式概述
设计模式概述
64 0
|
6月前
|
设计模式 安全
设计模式概述
设计模式概述
48 0
|
设计模式 数据可视化 程序员
设计模式概述、UML图、软件设计原则
设计模式概述 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。 1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ra
70 0
|
设计模式 开发框架 算法
设计模式概述以及 23种设计模式的介绍
设计模式概述以及 23种设计模式的介绍
440 0
设计模式概述以及 23种设计模式的介绍
|
设计模式 算法 程序员
设计模式之设计模式概述
设计模式之设计模式概述
107 0
|
设计模式 算法 程序员
java-23种设计模式概述【软件设计模式基本介绍(是什么、作用、优点)、模式的分类和介绍】
java-23种设计模式概述【软件设计模式基本介绍(是什么、作用、优点)、模式的分类和介绍】
344 0
|
设计模式 开发框架 算法
【Java设计模式 设计模式与范式】设计模式概述、基本原则及分类
【Java设计模式 设计模式与范式】设计模式概述、基本原则及分类
69 0
|
设计模式 uml
设计模式——概述、UML图、原则(二)
设计模式——概述、UML图、原则
183 0
设计模式——概述、UML图、原则(二)

热门文章

最新文章

  • 1
    C++一分钟之-设计模式:工厂模式与抽象工厂
    42
  • 2
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    46
  • 3
    C++一分钟之-C++中的设计模式:单例模式
    54
  • 4
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    38
  • 5
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    62
  • 6
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    57
  • 7
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    41
  • 8
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    50
  • 9
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    106
  • 10
    Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
    78