
设计模式
红茶川
这个作者很懒,什么都没留下…
展开
-
C++ 设计模式(5. 原型模式)
原型模式一种创建型设计模式,该模式的核心思想是基于现有的对象创建新的对象,而不是从头开始创建。 原型模式的基本结构 实现原型模式需要给原型对象声明一个克隆方法,执行该方法会创建一个当前类的新对象,并将原始对象中的成员变量复制到新生成的对象中,而不必实例化。并且在这个过程中只需要调用原型对象的克隆方法,而无需知道原型对象的具体类型。 原型模式包含两个重点模块: 抽象原型接口prototype: 声明一个克隆自身的方法clone 具体原型类ConcretePrototype: 实现clone方法,原创 2024-08-16 13:40:26 · 539 阅读 · 0 评论 -
C++ 设计模式(4. 建造者模式)
建造者模式(也被成为生成器模式),是一种创建型设计模式,软件开发过程中有的时候需要创建很复杂的对象,而建造者模式的主要思想是将对象的构建过程分为多个步骤,并为每个步骤定义一个抽象的接口。具体的构建过程由实现了这些接口的具体建造者类来完成。同时有一个指导者类负责协调建造者的工作,按照一定的顺序或逻辑来执行构建步骤,最终生成产品。 基本结构 建造者模式有下面几个关键角色: 产品Product:被构建的复杂对象, 包含多个组成部分。 抽象建造者Builder: 定义构建产品各个部分的抽象接口和一个返回复杂原创 2024-08-16 13:39:16 · 425 阅读 · 0 评论 -
C++ 设计模式(6. 适配器模式)
适配器模式Adapter Pattern是一种结构型设计模式,它可以将一个类的接口转换成客户希望的另一个接口,主要目的是充当两个不同接口之间的桥梁,使得原本接口不兼容的类能够一起工作。 基本结构 Target 是目标接口,Adaptee 是需要适配的类,Adapter 类将 Adaptee 的接口适配成 Target 接口,使得客户端可以通过 Target 接口来调用Adaptee 的功能。这样,客户端就可以使用目标接口,而不需要对原来的Adaptee进行修改,Adapter起到一个转接扩展的作用。原创 2024-08-16 13:41:50 · 506 阅读 · 0 评论 -
C++ 设计模式(7. 代理模式)
基本概念 代理模式Proxy Pattern是一种结构型设计模式,用于控制对其他对象的访问。 在代理模式中,允许一个对象(代理)充当另一个对象(真实对象)的接口,以控制对这个对象的访问。通常用于在访问某个对象时引入一些间接层(中介的作用),这样可以在访问对象时添加额外的控制逻辑,比如限制访问权限,延迟加载。 比如说有一个文件加载的场景,为了避免直接访问“文件”对象,我们可以新增一个代理对象,代理对象中有一个对“文件对象”的引用,在代理对象的load 方法中,可以在访问真实的文件对象之前进行一些操作,比原创 2024-08-16 13:42:48 · 200 阅读 · 0 评论 -
C++ 设计模式(8. 装饰模式)
基本概念 通常情况下,扩展类的功能可以通过继承实现,但是扩展越多,子类越多,装饰模式(Decorator Pattern,结构型设计模式)可以在不定义子类的情况下动态的给对象添加一些额外的功能。具体的做法是将原始对象放入包含行为的特殊封装类(装饰类),从而为原始对象动态添加新的行为,而无需修改其代码。 举个简单的例子,假设你有一个基础的图形类,你想要为图形类添加颜色、边框、阴影等功能,如果每个功能都实现一个子类,就会导致产生大量的类,这时就可以考虑使用装饰模式来动态地添加,而不需要修改图形类本身的代码,原创 2024-08-16 13:44:21 · 298 阅读 · 0 评论 -
C++ 设计模式(3. 抽象工厂模式)
抽象工厂模式也是一种创建型设计模式,提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类【引用自大话设计模式第15章】 基本结构 抽象工厂模式包含多个抽象产品接口,多个具体产品类,一个抽象工厂接口和多个具体工厂,每个具体工厂负责创建一组相关的产品。 通俗解释: 抽象产品接口AbstractProduct: 定义产品的接口,可以定义多个抽象产品接口,比如说沙发、椅子、茶几都是抽象产品。 具体产品类ConcreteProduct: 实现抽象产品接口,产品的具体实现,古典风格和沙发原创 2024-08-16 13:37:34 · 441 阅读 · 0 评论 -
C++ 设计模式(2. 工厂方法模式)
工厂方法模式也是一种创建型设计模式,简单工厂模式只有一个工厂类,负责创建所有产品,如果要添加新的产品,通常需要修改工厂类的代码。 工厂方法模式分为以下几个角色: 抽象工厂:一个接口,包含一个抽象的工厂方法(用于创建产品对象)。 具体工厂:实现抽象工厂接口,创建具体的产品。 抽象产品:定义产品的接口。 具体产品:实现抽象产品接口,是工厂创建的对象。 应用场景 工厂方法模式使得每个工厂类的职责单一,每个工厂只负责创建一种产品,当创建对象涉及一系列复杂的初始化逻辑,而这些逻辑原创 2024-08-16 13:35:25 · 237 阅读 · 0 评论 -
C++ 设计模式(1. 单例模式)
单例模式是一种创建型设计模式, 它的核心思想是保证一个类只有一个实例,并提供一个全局访问点来访问这个实例。 特点 全局访问点的意思是,为了让其他类能够获取到这个唯一实例,该类提供了一个全局访问点(通常是一个静态方法),通过这个方法就能获得实例。 只有一个实例的意思是,在整个应用程序中,只存在该类的一个实例对象,而不是创建多个相同类型的对象。 优点 全局控制:保证只有一个实例,这样就可以严格的控制客户怎样访问它以及何时访问它,简单的说就是对唯一实例的受控访问(引用自《大话设计模式》第21原创 2024-08-16 13:33:53 · 452 阅读 · 0 评论