几种设计模式简述

本文介绍了设计模式的基本概念,以及6种常见设计模式——单例模式、工厂模式、建造者模式、代理模式、中介者模式和组合模式的定义、特点及应用场景。这些模式有助于提高代码的可重用性、可读性和可靠性。
摘要由CSDN通过智能技术生成

1. 软件设计模式的概念

“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。直到 1990 年,软件工程界才开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。

1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书,在本教程中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,GoF)匿名著称。直到今天,狭义的设计模式还是本教程中所介绍的 23 种经典设计模式。

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

2. 单例模式

单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如ÿ

目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 1.2 Smalltalk MVC设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 1.6.6 关联运行时刻和编译时刻的 结构 15 1.6.7 设计应支持变化 16 1.7 怎样选择设计模式 19 1.8 怎样使用设计模式 20 第2章 实例研究:设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor和Composition 27 2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 Monoglyph 30 2.4.3 Decorator 模式 32 2.5 支持多种视感标准 32 2.5.1 对象创建的抽象 32 2.5.2 工厂类和产品类 33 2.5.3 Abstract Factory模式 35 2.6 支持多种窗口系统 35 2.6.1 我们是否可以使用Abstract Factory 模式 35 2.6.2 封装实现依赖关系 35 2.6.3 Window和WindowImp 37 2.6.4 Bridge 模式 40 2.7 用户操作 40 2.7.1 封装一个请求 41 2.7.2 Command 类及其子类 41 2.7.3 撤消和重做 42 2.7.4 命令历史记录 42 2.7.5 Command 模式 44 2.8 拼写检查和断字处理 44 2.8.1 访问分散的信息 44 2.8.2 封装访问和遍历 45 2.8.3 Iterator类及其子类 46 2.8.4 Iterator模式 48 2.8.5 遍历和遍历过程的动作 48 2.8.6 封装分析 48 2.8.7 Visitor 类及其子类 51 2.8.8 Visitor 模式 52 2.9 小结 53 第3章 创建型模式 54 3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象结构型 模式 107 4.4 Decorator(装饰)—对象结构型 模式 115 4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator与Proxy 145 第5章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 147 5.2 COMMAND(命令)—对象行为型 模式 154 5.3 INTERPRETER(解释器)—类行为型 模式 162 5.4 ITERATOR(迭代器)—对象行为型 模式 171 5.5 MEDIATOR(介者)—对象行为型 模式 181 5.6 MEMENTO(备忘录)—对象行为型 模式 188 5.7 OBSERVER(观察者)—对象行为型 模式 194 5.8 STATE(状态)—对象行为型模式 201 5.9 STRATEGY(策略)—对象行为型 模式 208 5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISIT
### 回答1: 设计模式大致可以分为三种类型:创建型模式、结构型模式和行为型模式。其,创建型模式包括工厂模式、抽象工厂模式、单例模式、建造者模式和原型模式;结构型模式包括适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式和代理模式;行为型模式包括模板方法模式、命令模式、迭代器模式、观察者模式、介者模式、备忘录模式、解释器模式和状态模式。这些模式都有各自的作用,可以帮助开发者更好地组织代码、提高代码的可读性和可维护性。 ### 回答2: 设计模式可以分为三种类型,分别是创建型模式、结构型模式和行为型模式。 1. 创建型模式:创建型模式主要关注对象的创建方式,以达到降低耦合度、增加灵活性和复用性的目的。其常用的创建型模式有: - 单例模式:确保一个类只有一个实例,并提供一个全局访问点。 - 工厂模式:定义一个创建对象的接口,但由子类决定实例化哪个类。 - 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体类。 - 建造者模式:将一个复杂对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。 2. 结构型模式:结构型模式关注对象之间的组合关系,以实现新的功能和结构,以及更好地管理代码。常用的结构型模式有: - 适配器模式:将一个类的接口转换成客户希望的另一个接口。 - 装饰者模式:动态地给一个对象添加一些额外的职责。 - 代理模式:为一个对象提供一个替身或占位符,以控制对它的访问。 - 组合模式:将对象以树形结构组织起来,以达到表示"整体-部分"的层次结构。 3. 行为型模式:行为型模式关注对象之间的通信和协作方式,以达到更好地组织和管理对象之间的关系。常用的行为型模式有: - 观察者模式:定义了一种一对多的依赖关系,使得一个对象状态发生改变时,所有依赖该对象的对象都会收到通知并自动更新。 - 策略模式:定义一系列算法,将其封装成各自独立的类,并使它们之间可以互换。 - 模板方法模式:定义一个操作的算法框架,将一些步骤延迟到子类实现。 - 命令模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 设计模式通过提供一套通用的解决方案,可以帮助开发人员更好地组织、重用和扩展代码,提高代码的可维护性和可扩展性。 ### 回答3: 设计模式通常分为三种类型,分别是创建型模式、结构型模式和行为型模式。 1. 创建型模式(Creational Patterns): - 工厂模式(Factory Pattern):用于创建对象的一种模式,封装了对象的创建过程。 - 单例模式(Singleton Pattern):确保一个类只有一个实例,并且提供一个全局访问点。 - 建造者模式(Builder Pattern):将一个复杂对象的构建过程与其表示分离,使同样的构建过程可以创建不同的表示。 - 原型模式(Prototype Pattern):通过复制已有对象的原型来创建新对象,避免直接创建对象并减少构造过程的开销。 2. 结构型模式(Structural Patterns): - 适配器模式(Adapter Pattern):将一个类的接口转换成客户端所期望的另一个接口,使原本不兼容的类能够一起工作。 - 桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们可以独立地变化。 - 装饰器模式(Decorator Pattern):动态地给对象添加额外的职责,是继承的一种替代方案。 - 代理模式(Proxy Pattern):为其他对象提供一个代理,控制对该对象的访问。 3. 行为型模式(Behavioral Patterns): - 观察者模式(Observer Pattern):定义了对象间的一种一对多的依赖关系,使得多个观察者对象同时监听一个主题对象。 - 策略模式(Strategy Pattern):定义了一系列算法,并使这些算法可以相互替换,使算法的变化独立于使用它的客户端。 - 命令模式(Command Pattern):将请求封装成对象,使得可以用不同的请求对客户端进行参数化。 - 迭代器模式(Iterator Pattern):提供一种方法顺序访问一个容器对象的各个元素,而无需暴露其内部实现细节。 设计模式的作用是提供了经验丰富的面向对象设计师们总结出来的解决问题的通用解决方案,能够提高代码的灵活性、可维护性和可重用性。通过应用设计模式,可以使系统结构更加清晰,易于理解和扩展,并且减少了代码的重复,提高了开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值