设计模式笔记
文章平均质量分 79
阳光开朗_大男孩儿
不为未发生的事担忧,不为过去的事后悔。与其担忧,不如做好当下,与其后悔,不如行动弥补
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
桥接模式和组合模式的区别
定义:将抽象部分与它的实现部分分离,使它们可以独立地变化。目的:主要解决在多维度变化情况下,类的爆炸性增长问题。通过将两个或多个维度的变化分离到不同的类层次中,从而使得系统更具灵活性。桥接模式:用于分离抽象和实现,使它们可以独立变化。适用于多维度变化的场景,如形状和颜色的组合。组合模式:用于构建对象的树形结构,使得单个对象和组合对象可以一致地处理。适用于表示部分-整体层次结构的场景,如公司组织架构。原创 2024-12-06 16:55:05 · 1494 阅读 · 0 评论 -
桥接设计模式
假设你有一个包含不同页面的网站,并且你需要允许用户更改主题。你会怎么做?是为每个主题创建每个页面的多个副本,还是只创建单独的主题并根据用户的偏好加载它们?桥接模式允许你采用后者。原创 2024-12-06 16:53:01 · 501 阅读 · 0 评论 -
外观模式、函数封装、状态模式的区别
函数封装通常是在同一模块或类内将复杂操作封装成单个函数,外部调用时简化了使用,但并没有从整体上简化子系统的结构。外观模式则是通过提供一个统一的接口,简化对整个复杂子系统的访问,封装了多个类和模块之间的交互,旨在简化系统的外部使用。状态模式:关注的是对象的状态和不同状态下的行为变化。状态模式使得对象的行为可以根据内部状态的变化而变化,通常会涉及多个状态对象。外观模式:关注的是简化对复杂子系统的调用。它通过提供一个简化的接口来访问多个子系统,而不关心系统内部的状态变化。特性外观模式函数封装。原创 2024-12-05 14:34:51 · 755 阅读 · 0 评论 -
外观设计模式
现实世界中的例子你是如何打开电脑的呢?“按下电源键”,你说!你之所以这么认为,是因为你使用的是电脑提供的外部简单界面,而电脑内部需要执行很多操作才能实现这一点。这个简单界面背后的复杂子系统就是一个外观(Facade)。用简单的话来说外观模式为复杂的子系统提供了一个简化的接口。维基百科的说法外观是一个对象,它为较大的代码体(如类库)提供了一个简化的接口。外观模式的核心思想:外观模式的核心目的是为复杂子系统提供一个统一的原创 2024-12-05 14:32:28 · 621 阅读 · 0 评论 -
装饰器模式
这个 C++ 代码实现了装饰器模式,允许我们在不修改现有代码的情况下,动态地为咖啡添加不同的附加功能。装饰器模式非常适合在运行时增加对象的行为,提供更好的灵活性和扩展性。原创 2024-12-05 14:29:06 · 659 阅读 · 0 评论 -
设计模式学习思路二
通过了解不同设计模式的意图、角色和结构,你可以在代码中识别出对应的模式。关键是关注代码的职责划分、类之间的关系、行为的变化和灵活扩展的机制。原创 2024-12-05 14:24:55 · 1959 阅读 · 0 评论 -
设计模式的学习思路
优点:提供一个接口,能够创建一系列相关或相互依赖的对象。系统不需要知道具体的产品类,减少了耦合。缺点:引入抽象工厂和多个产品族,增加系统复杂度。使用场景:需要创建一组相关的对象,且这些对象可能属于不同的产品族。对象之间有一些共同的特性,但可能有不同的实现。设计模式是面向对象设计的经典解决方案,不同的设计模式适用于不同的需求和问题。在选择设计模式时,要根据项目的实际情况和需求,综合考虑模式的优缺点,以达到系统高效、可扩展和维护的目标。原创 2024-11-21 17:00:02 · 1200 阅读 · 0 评论 -
组合模式和适配器模式的区别
特征组合模式适配器模式目标统一处理单个对象和对象的组合(树形结构)。将不兼容的接口适配成客户端所期望的接口。主要用途处理部分和整体的关系(树形结构)。解决不同接口不兼容的问题。结构Component接口,Leaf(叶子节点),Composite(树枝节点)。Target(目标接口),Adapter(适配器),Adaptee(被适配类)。应用场景组织架构、文件系统、UI组件等树形结构。接口不兼容时,需转换接口以便合作。设计目标。原创 2024-11-21 16:41:29 · 1466 阅读 · 0 评论 -
组合设计模式
每个组织都由员工组成。每个员工都有相同的特征,即拥有薪水、有职责、可能向某人汇报工作,也可能有下属等。原创 2024-11-21 16:37:44 · 1087 阅读 · 0 评论 -
适配器模式
Lion 接口:定义了狮子的标准接口,即roar()。AfricanLion 和 AsianLion:实现了狮子的接口,可以被猎人直接捕猎。WildDog:接口不兼容狮子,无法被猎人捕猎。WildDogAdapter:将WildDog适配成符合Lion接口的形式,从而让猎人可以捕猎“野狗”。适配器模式主要用在接口不兼容的情况下,通过适配器使得两个不兼容的类可以协同工作。原创 2024-10-29 11:16:05 · 1018 阅读 · 0 评论 -
单例模式 c++
在软件工程中,单例模式是一种软件设计模式,它限制一个类只能有一个实例。这在需要一个对象来协调系统中的操作时非常有用。原创 2024-10-23 17:03:57 · 1290 阅读 · 0 评论 -
原型模式和建造模式的区别
模式原型模式建造者模式意图通过复制现有对象来创建新对象。通过分步骤构建复杂对象。创建方式克隆(浅拷贝或深拷贝)现有对象。按步骤逐步构建对象。结构结构较简单,通常只有一个类实现克隆。结构较复杂,通常涉及多个类和多个步骤。状态修改通过克隆对象后修改少量状态。通过多个步骤灵活调整对象的各个部分。应用场景当对象创建昂贵且需要复制现有对象时。当对象构建过程复杂,需要逐步构建或有多种构建方式时。原型模式:Prototype 是一个抽象类,定义了 clone() 方法。原创 2024-10-21 09:51:04 · 1478 阅读 · 0 评论 -
原型模式复制对象的原理是什么呢?
浅拷贝:在浅拷贝中,指针成员只是复制地址,导致两个对象共享相同的内存。深拷贝:深拷贝通过为指针成员分配新的内存并复制数据,确保每个对象有独立的内存空间。原创 2024-10-21 09:48:53 · 636 阅读 · 0 评论 -
原型模式具体和直接调用构造函数创建实例的区别
原型模式与直接调用构造函数创建实例的区别主要在于创建对象的方式和使用场景。让我们一步一步来理解。原创 2024-10-21 09:46:13 · 827 阅读 · 0 评论 -
原型模式~
还记得多莉吗?那只被克隆的羊!我们不必深究细节,但关键点是这都与克隆有关。原创 2024-10-21 09:44:09 · 681 阅读 · 0 评论 -
建造者模式和工厂模式的区别
工厂模式关注的是对象的创建。建造者模式关注的是对象的构造过程。工厂模式和建造者模式虽然都是创建型模式,但它们解决的是不同的问题。工厂模式更多地用于封装对象创建的复杂性,而建造者模式则是为了逐步构建复杂对象,并且允许构建过程的不同表示。原创 2024-10-18 11:45:41 · 1548 阅读 · 0 评论 -
建造者模式
现实世界的例子想象一下,你在哈迪餐厅(Hardee's)点了一份特定的套餐,比如“大哈迪”(Big Hardee),他们二话不说就把套餐递给了你,这就是简单工厂模式的例子。但也有一些情况下,创建逻辑可能涉及更多步骤。例如,你想要一份定制的赛百味(Subway)套餐,你有多种选择来决定你的三明治怎么做,比如你想要什么面包?你想要什么酱料?你想要什么奶酪?等等。在这种情况下,建造者模式就能派上用场。用简单的话来说建造者模式允许你创建具有不同特征的对象,同时避免构造器污原创 2024-10-18 11:42:52 · 759 阅读 · 0 评论 -
设计模式学习
简单工厂模式-CSDN博客 工厂模式~-CSDN博客 抽象工厂模式-CSDN博客 简单工厂和工厂模式的区别-CSDN博客 工厂模式和抽象工厂的区别-CSDN博客 简单工厂、工厂模式、抽象工厂的区别-CSDN博客原创 2024-10-17 11:13:39 · 636 阅读 · 0 评论 -
简单工厂、工厂模式、抽象工厂的区别
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。简单工厂: 通过一个静态方法,根据参数决定创建哪种具体对象。适用于对象种类较少,变化不频繁的情况。工厂方法: 通过子类实现工厂方法,创建具体对象。适用于对象种类较多,且需要灵活扩展的情况。抽象工厂: 提供一个接口,用于创建一系列相关或依赖的对象。适用于需要一组相关或依赖对象的情况,确保产品族的一致性。原创 2024-10-17 11:11:49 · 1082 阅读 · 0 评论 -
工厂模式和抽象工厂的区别
抽象工厂模式提供一个接口,创建一系列相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式的主要目的是提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。工厂方法模式专注于解决单一产品的创建问题,通过子类实现工厂方法来创建具体对象。抽象工厂模式则解决创建一系列相关或依赖对象的问题,通过定义一组相关产品的创建接口来保证产品族的一致性和依赖关系。原创 2024-10-17 11:07:41 · 463 阅读 · 0 评论 -
简单工厂和工厂模式的区别
简单工厂模式通过一个单独的类(通常称为工厂类)来创建对象。这个工厂类包含一个静态方法,根据传入的参数决定创建哪种具体类型的实例。工厂方法模式通过定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法把实例化工作推迟到子类。简单工厂和工厂方法模式主要的区别在于扩展性和实例化控制方式。简单工厂更简单直接,但扩展性较差;工厂方法模式更加灵活,适合需要扩展的场景。至于是否每次创建新实例,这取决于具体的实现,而不是设计模式本身的要求。原创 2024-10-17 11:04:25 · 517 阅读 · 0 评论 -
抽象工厂模式
以我们之前在简单工厂模式中提到的门为例。根据你的需求,你可能会从木门店获得一扇木门,从铁匠铺获得一扇铁门,或从相应的店铺获得一扇PVC门。此外,你可能需要具有不同专业技能的人来安装门,例如木匠安装木门,焊工安装铁门等。由此可见,门之间现在有了依赖关系,木门需要木匠,铁门需要焊工等。原创 2024-10-17 10:59:35 · 1384 阅读 · 0 评论 -
工厂模式~
考虑一个招聘经理的情况。一个人不可能为每一个职位都进行面试。根据职位空缺,她必须决定并将面试步骤委托给不同的人。原创 2024-10-17 10:56:05 · 1269 阅读 · 0 评论 -
简单工厂模式
想象一下,你在建造一座房子,需要安装门。你可以选择穿上木匠的衣服,带上木头、胶水、钉子以及制作门所需的所有工具,然后在你的房子里开始制作门;或者,你可以简单地给工厂打个电话,让他们把已经做好的门送过来,这样你就无需学习如何制作门,也无需处理制作过程中产生的杂乱无章的局面。原创 2024-10-17 10:46:53 · 527 阅读 · 0 评论
分享