设计模式之创建模式(全)

【软工方法论05】设计模式创建型工厂模式全解析 本文系统解析了创建型设计模式中的工厂模式,通过肯德基点餐的类比引入工厂模式的核心思想。文章首先指出直接new对象导致的耦合问题,然后详细介绍了三种工厂模式:简单工厂(通过静态方法创建对象,违反开闭原则)、工厂方法(抽象工厂接口,子类决定实例化,符合开闭原则)和抽象工厂(创建相关对象族,保证产品配套性)。每种模式都配有代码示例和生活化比喻(如自动售货机、开放式厨房、电脑套餐),清晰展示了不同工厂模式的适用场景和实现方式,帮助开发者根据需求选择合适的创建型设计模式。 阅读详情

       1 创建型模式(5)

Factory               (工厂方法,最常用)

AbstactFactory          (抽象工厂,与工厂方法一道组成"工厂模式")

Singleton

Builder

Prototype

      

 

1,factory method(工厂方法)

问题:

       I,多态中,A为基类,B为派生类,用A*指向一个new B产生的对象,实现多态,当有多个A的派生类时,要多次使用new ***,这就要求使用并记住多个子类名,可能引起名字冲突;

       II,A为抽象基类,B为A的派生类,C不是A的派生类而是创建者类,D是C的派生类: 如果C中要使用A,且A有多个派生类,C中并不知道A的哪个派生类将被实例化,但是在D中可以知道A的哪个派生类会被实例化.

 

由此引出了Factory模式的两个最重要的功能:

       1)定义创建对象的接口,封装了对象的创建,特别适用于创建工作比较复杂的情况;

       2)使得具体化类的工作延迟到了子类中。

 

总结: 模式的功能与适用情况不是一成不变的,但一般要专门实现一个类来作为Factory以生产类**的对象, 先声明类**,再用类***来生成**的指针对象,这就是工厂方法.   

代码:

class basecls

{

public:

       basecls() {}

       virtual ~basecls() {}

};

class subclsA:public basecls

{

public:

       subclsA(char *name) {  cout<<name<<endl;       }

       virtual ~subclsA() {}

};

class subclsB: public basecls

{

public:

       subclsB(char *name) {  cout<<name<<endl;       }

       virtual ~subclsB() {}

};

 

class creator

{

public:

       creator() {}

       virtual ~creator() {}

       basecls* createobj( char name)

       {

              switch(name)

              {

              case 'A':

                     return (new subclsA("sub class A"));

              case 'B':

                     return (new subclsB("sub class B"));

              }

       }

};

int _tmain(int argc, _TCHAR* argv[])

{

       basecls*pobj=(new creator)->createobj('A');

       DELETEIF(pobj);

       pobj=(new creator)->createobj('B');

       DELETEIF(pobj);

       return 0;

}

       点评:在上面的代码中,如果在用 class subcreator: public creator 然后在subcreator中实现对subclsA和subclsB的创建,则是Factory method 的第二种功能体现: 延迟对象创建.

       FactoryMethod模式仅仅局限于具有共同基类的类的创建,这一点,由creator的createobj方法返回basecls决定了; 如果我们要为不同类的类提供一个对象创建的接口,那就要用抽象工厂AbstractFactory.

 

2,abstractfactory

       问题: FactoryMethod模式仅仅局限于具有共同基类的类的创建,我们可能要为不同类的类提供一个对象创建的接口.

 

class ProductA //假设这是怪物AbsProductA类

{

public:

    ProductA(){   cout<<"This is ProductA----";   }

};

 

class ProductA_10:public ProductA //这是等级为10的AbsProductA类怪物

{

public:

    ProductA_10(){    cout<<"ProductA_10::leavl= 10/n";  }

};

 

class ProductA_20:public ProductA //这是等级为20的AbsProductA类怪物

{

public:

    ProductA_20(){    cout<<"ProductA_20::leavl= 20/n";  }

};

 

class ProductB //假设这是怪物AbsProductB类

{

public:

    ProductB(){   cout<<"This is ProductB----";   }

};

 

class ProductB_10:public ProductB //这是等级为10的AbsProductB类怪物

{

public:

    ProductB_10(){    cout<<"ProductB_10::leavl= 10/n";  }

};

 

class ProductB_20:public ProductB //这是等级为20的AbsProductB类怪物

{

public:

    ProductB_20(){    cout<<"ProductB_20::leavl= 20/n";  }

};

 

class AbsFactory  //怪物生产机

{

public:

    virtual ProductA*CreateProductA()=0;

    virtual ProductB*CreateProductB()=0;

};

 

class FactoryLeavl10:public AbsFactory//专门生产等级为10的怪物

{

public:

    ProductA*CreateProductA(){  return new ProductA_10;  }

    ProductB*CreateProductB(){  return new ProductB_10;  }

};

 

class FactoryLeavl20:public AbsFactory //专门生产等级为20的怪物

{

public:

    ProductA*CreateProductA(){  return new ProductA_20;  }

    ProductB*CreateProductB(){  return new ProductB_20;  }

};

 

int main()

{

    AbsFactory* pFacA=new FactoryLeavl10;

    pFacA->CreateProductA(); //生产等级为10的A类怪物

    pFacA->CreateProductB(); //生产等级为10的B类怪物

 

    AbsFactory* pFacB=new FactoryLeavl20;

    pFacB->CreateProductA(); //生产等级为20的A类怪物

    pFacB->CreateProductB(); //生产等级为20的B类怪物

 

    return 0;

}

3,SingleTon(单态)模式是最简单的一种设计模式,它用于保证一个类只有一个实例存在.道理也很简单,用的是自身类型的static指针和一个返回该指针的static函数:

#include <iostream>

using namespace std;

class singleton

{

public:

       singleton() {   cout<<"construct a singleton object/n";        }

       ~singleton(){  if(_instance) { delete _instance;     _instance=0;   }     }

       static singleton*getinstance();

private:

       static singleton* _instance;

};

 

singleton* singleton::_instance=0;

singleton* singleton::getinstance()

{

       if (!_instance)

       {

              _instance=new singleton;

       }

       return _instance;

}

 

int main()

{

       singleton*pobj=singleton::getinstance();

       singleton*pobj2=singleton::getinstance();

       return 0; 

}

 

4,Builder (创建者)

       问题提出: 有时要创建的一个对象是很复杂的,它由很多其他类型的对象组成,这时可一步步地创建该复杂对象,在每一步都传入参数,产生一个与前一步不同的对象. 这就是Builder的任务.  比如,一辆汽车是一个对象,它由四个车轮,四个车窗,车身,方向盘等组成. 我们先造车身,再安车窗,再装车轮等等.

       这是一个将对象表示与创建分离的模式,product为整体,PartX为部分,它们都是表示部分,且整体与部分之间无继承关系, Builder为创建者,往往作为基类,定义一些虚函数, CoCreateBuilder为Builder的实现者类,创建各个PartX.  另外还有一个Director,这是由用户使用的,它有一个以Builder为参数的函数Construct,客户只要传递一个CoCreateBuilder对象给Construct,就可以完成对象的创建,而不必知道创建复杂对象的具体过程.

#include <iostream>

using namespace std;

class PartA;

class PartB;

class Product         //整体

{

public:

       Product(PartA*Pa=0,     PartB*Pb=0)   //部分构成整体

       {    

              if(Pa!=0&&Pb!=0)

              {

                     memberA=Pa;

                     memberB=Pb;

                     cout<<"This is Product/n";   

              }

       }

private:

       PartA*memberA;    //部分

       PartB*memberB;

      

};

 

class PartA

{

public:

       PartA(){  cout<<"This is PartA/n";       }     //A部分

      

};

 

class PartB

{

public:

       PartB(){  cout<<"This is PartB/n";       }     //B部分

};

 

class Builder                                                           //创建者

{

public:

       virtual PartA*CreatePartA()=0;                          //创建A部分

       virtual PartB*CreatePartB()=0;                           //创建B部分

       virtual PartA*GetPartA()=0;                              //取出A部分

       virtual PartB*GetPartB()=0;                               //取出B部分

       virtual Product*GetProduct()=0;

};

 

class CoCreateBuilder:public Builder                   //实现创建者

{

public:

        PartA*CreatePartA(){  return (memberA=new PartA);            }

        PartB*CreatePartB(){   return (memberB=new PartB);             }

        PartA*GetPartA(){      return memberA;    }

        PartB*GetPartB(){       return memberB;    }

        Product*GetProduct(){       return new Product(memberA,memberB);    }//将部分组合成整体

private:

       PartA*memberA;

       PartB*memberB;

 

};

 

 

class Director                                    //由用户程序员使用的二级创建者

{

public:

       void CreatePart(Builder*pobj)       //创建部分

       {    

              pobj->CreatePartA();

              pobj->CreatePartB();

       }

       Product* CreateProduct(Builder*pobj)  //创建整体

       {

              this->CreatePart(pobj);

              return pobj->GetProduct();

       }

};

 

int main()

{

       Director* pDirector=new Director;

       pDirector->CreateProduct(new CoCreateBuilder);       //真正创建复杂对象,这是很有意思的,有一个CoCreateBuilder对象

       return 0;                              //作参数,调用Director的函数,竟然得到了想要Product.哈哈

}

理解Builder模式最重要在于理解复杂对象由部分对象构成, 而其创建者与对象本身是分离的. 至于为什么不用Builder直接实现CoCreateBuild

的功能,主要是考虑到代码的整洁, Builder专门负责提供接口, 而CoCreateBuilder将产生一个完整的复杂对象.

 

 

5,Prototype(原型模式)

       原型模式就是通过已有实例来复制生成新的对象,克隆.

       这是很简单的一种模式,就是用一个Clone函数调用重载的复制构造函数而已:

 

#include <iostream>

using namespace std;

class basecls                               //接口,提供clone方法

{

public:

       basecls() {}

       ~basecls()      {}

       virtual basecls*clone()const=0;

};

 

class dervcls:public basecls

{

public:

       dervcls() {     cout<<"constructor/n";         }

       dervcls(const dervcls&obj)   {     *this=obj; cout<<"overload copy constructor/n"; }     //复制构造函数

       ~dervcls()      {}

       virtual basecls*clone()const { return new dervcls(*this);    }     //实现clone函数

};

 

int main()

{

       basecls*pobj1=new dervcls;

       basecls*pobj2=pobj1->clone();     //调用clone,克隆对象

       basecls*pobj3=pobj2->clone();     //再次克隆

       return 0;

}

 

 

       以上就是五种GOF创建模式,都是针对对象的创建而提出的,FactoryMethod 封装对象创建,AbstracFactory用于创建多个有关联的对象,Singleton用于保持对象的唯一性,Builder 强调复杂对象的各个部分的逐步创建, Prototype主要利用已有对象创建其他对象.

 

【软工方法论08】设计模式创建型原型模式全解析 摘要 原型模式是一种创建型设计模式,通过复制现有对象来创建新对象,无需知道具体类型。它解决了复杂对象重复创建的问题,简化了对象初始化过程。实现方式包括: 浅克隆 - 仅复制对象本身,引用字段共享 深克隆 - 递归复制所有引用字段,可通过手动复制、JSON序列化或Java原生序列化实现 模式适用于需要高效创建相似对象的场景,特别是当对象初始化成本较高时。原型管理器可集中管理多种原型对象,提供统一的克隆接口。该模式在需要保留对象状态或避免重复初始化时特别有用。 阅读详情

相关推荐

从MATLAB到版图:手把手复现一篇16位1MSPS SAR ADC的完整设计流程(含Cadence与Verilog代码)

本文详细介绍了16位1MSPS SAR ADC的完整设计流程,从MATLAB行为级建模到Cadence电路实现,再到Verilog数字逻辑编码和版图生成。重点讲解了高精度逐次逼近型模数转换器的关键技术,包括电容阵列建模、校准算法实现、FFT性能验证以及混合信号仿真等,为工程师提供了实用的工业级设计指南。

weixin_28703507的博客 301

设计模式:一个实例用全创建型模式

设计模式:一个实例用全创建型模式

xie__jin__cheng的博客 2559

【分享】获取微信通讯录python代码形式实现

微信号”, “昵称”, “地区”, “备注”, “标签”, “签名”, “来源”5. 找到最后一个空格所在的位置(后一个就是真正的联系人了)当前微信号与上一个相同的时候,说明到底部了,可以跳出循环。3. 滚动鼠标到最顶部(防止已经滚动了一部分了)7.记录下上一个联系人的微信号。7. 无限循环按键盘下箭头。获取详情中的以下元素内容。6. 点击第一个联系人。4. 获取联系人列表。

程序员老狼专注开发aigc或客服系统应用 2892

设计模式全详解——5种创建型模式

设计模式是资深程序员的必修课,本文对创建型模式进行解释,极其适合设计模式入门阅读!

Nimrod__的博客 1125

Procedural modeling

What is procedural modeling? One content generation option is modeling buildings, plants, clouds, cities, and worlds using an underlying system of rules. 1 Procedural Modeling: Grammars A rule-based generative system loosely organized as: ...

qq_24505417的博客 711

【系统架构设计师-2026上半年真题】案例分析-参考答案及详解(回忆版)

架构评估与设计:通过入侵检测系统的案例分析,阐述质量属性(性能/可用性/安全性/可修改性)的匹配方法,推荐管道-过滤器风格处理实时数据流,并设计8个核心构件实现数据采集到告警的全流程处理。 高并发优化方案: 分析悲观锁(排他锁/共享锁)与乐观锁的特性差异,提出乐观锁通过版本号/CAS实现,悲观锁适用于强一致性场景。 给出Redis优化三手段:分布式锁控制临界资源、Lua脚本保证原子操作、热点数据多级缓存,结合消息队列削峰填谷。 分层架构实践: 智

数据知道的博客 1675

设计模式觉醒系列(03)创建型模式的5个设计模式 | 一口气讲全讲透

本文详细介绍了设计模式中的创建型模式,包括建造者模式、原型模式、单例模式、工厂方法模式和抽象工厂模式。创建型模式关注对象的创建过程,隐藏了创建细节,以提高代码的可维护性和可扩展性。通过具体的实战demo和应用场景分析,展示了每种模式的特点和优势。例如,建造者模式适用于复杂对象的分步骤构建;原型模式通过复制对象实现高效复用;单例模式确保全局唯一实例;工厂方法模式和抽象工厂模式则提供了灵活的对象创建机制,支持多类型产品族的生产。这些模式在实际开发中能够简化客户端代码,提升系统灵活性和复用性。

拉丁解牛技术专栏 1414

uniapp(微信小程序) - 实现uniapp小程序电子签名板,横屏手写姓名签名专用写字画板,客户专用签字板,手写签名签字画板组件,手写签名,(详细运行示例,一键复制开箱即用)

uniapp实现微信小程序的电子签名效果,uniapp微信小程序 电子签名 写字板,用uniapp实现微信小程序的电子签名,uniapp微信小程序canvans实现手写签名,记录一个uniapp写的小程序的手写板,横屏,用于签名,unniapp实现电子签名,uniapp怎么做横屏的手写签名,uniapp如何实现签字板,uniapp小程序平台下怎么做电子签名板组件,uniapp电子签名插件,uniapp最好用的电子写字板插件组件源码,实现uniapp 手写签名功能,手写板、签字板,uni-app插件市场最好的

✅ 精选推荐文章 1万+

[转]23种设计模式全解析-创建模式

A、创建模式(5种) 从这一块开始,我们详细介绍Java中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析。   首先,简单工厂模式不属于23中涉及模式,简单工厂一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。 0、简单工厂模式 简单工厂模式模式分为三种: 01、普通 就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先...

vineet 152

后摄模块辐射超标整改

某行车记录仪在EMI测试中出现辐射超标问题,通过模块剥离法定位到后摄模块的Ethernet数据线为噪声源。深入检查发现TYPE-C延长线屏蔽层未有效接地,形成辐射泄漏通道。整改措施包括加强屏蔽层360°接地、使用导电布改善连接处屏蔽等,最终使辐射降至EN55032 Class B限值以内。案例揭示了高速信号延长线中屏蔽连续性的重要性,建议设计阶段就重视连接器屏蔽设计和共模干扰抑制。

硬核科技 255

【银河麒麟服务器操作系统】安装英伟达4090D显卡驱动操作指南

本文详细介绍了在银河麒麟高级服务器操作系统V10SP3-2403-X86版本上安装NVIDIA RTX4090D显卡驱动的完整流程。主要内容包括:准备工作检查、开源驱动禁用、运行级别切换、依赖包安装以及交互式安装过程中的关键选项选择(32位库选Yes、X配置选No)。通过禁用nouveau驱动、重建内核引导等步骤确保驱动安装成功,最后通过nvidia-smi命令验证驱动安装情况。文档提供了操作检查表和安装流程图,帮助用户在银河麒麟系统上顺利完成显卡驱动部署。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 3101

【常用设计模式全解析】创建型模式(聚焦对象创建机制)、结构型模式(优化类与对象的组合关系)、行为型模式(规范对象间的交互行为)

本文总结了后端开发中常用的创建型设计模式,包括单例模式、工厂模式和建造者模式。单例模式确保全局唯一实例,适合配置类和资源密集型对象;工厂模式封装对象创建逻辑,降低耦合,包含简单工厂和工厂方法两种实现;建造者模式分离复杂对象的构建与表示,适用于属性可选的对象创建。这些模式能提升代码复用性、可维护性和扩展性,是后端开发的重要工具。

独立思考,明辨是非 980

UNET改进77:全网首发-添加CFBlock |

本文介绍了在UNet模型中集成CFBlock注意力机制的实现方法。主要分为三个步骤:1) 创建CFBlock模块,包含卷积注意力机制和MLP;2) 在UNet连接处添加注意力模块;3) 在卷积层中嵌入注意力机制。具体实现包括:定义Conv、MLP和ConvolutionalAttention等基础模块,构建CFBlock核心结构;在UNet跳跃连接处插入注意力模块;将注意力机制整合到DoubleConv和Down模块中。该方法通过在不同位置引入注意力机制,可有效提升模型的特征提取能力。代码实现使用PyTor

AIcurator的博客 388

创建型模式 (Creational Patterns) 玄子Share 设计模式 GOF 全23种 + 七大设计原则

创建型模式 (Creational Patterns) 玄子Share 设计模式 GOF 全23种 + 七大设计原则

qq_62283694的博客 1946

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

28.设计模式-创建者模式-模式扩展(简单工厂模式+配置文件(创建对象,干掉工厂接口和工厂实现类))

我们这里的扩展其中就是使用通过用配置文件加工厂模式,干掉工厂模式的工厂接口和那些工厂实现类。通过一个容器来读取配置文件创建对象。28.设计模式-创建者模式-模式扩展(简单工厂模式+配置文件(创建对象,干掉工厂接口和工厂实现类))

分享JAVA/ Python/ Ts学习路上的一些笔记,不足之处多多见谅。 185

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

设计模式

23种设计模式全解析 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。...

weixin_40193469的博客 184

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

php设计模式总结

#1 使用设计模式(如建造者、外观、原型和模板模式)更快速、更有效地创建对象 #2 使用数据访问对象和代理设计模式分离体系结构 #3 使用委托、工厂和单元素设计模式改善代码流和控制 #4 在不修改对象和新的情况下实现访问者和装饰器设计模式以增强对象 #5 全面的、使用观察者设计模式的插入式创建技术 转载于:https://www.cnblogs.com/martinjinyu/p/3...

weixin_30578677的博客 82

设计模式之创建型模式详解

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。

zengchenAAA的博客 1769

【java设计模式】2 - 创建型设计模式

需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。

weixin_45442529的博客 1038

设计模式之创建型模式

设计模式是软件开发中经过验证的可复用解决方案,它们源自实践、提炼于经验,并在面向对象编程中扮演着关键角色。GoF(Gang of Four)设计模式分为创建型、结构型和行为型三大类,共23种。设计模式的核心价值在于提高代码的可维护性、可扩展性和可复用性,同时遵循软件设计原则。

北_鱼的博客 894

设计模式[1]:创建型设计模式

1.抽象工厂模式介绍(1) 模式简介抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式的核心思想是将对象的创建与使用分离,使得系统可以在不修改代码的情况下切换不同的产品族(工厂方法只有一种产品族)。(2) 使用场景使用场景场景描述数据库驱动和连接DriverManager可以看作抽象工厂,它根据不同的数据库驱动创建不同的Connection,不同数据库有不同的Connection创建不同DAO。

正直朱的博客 894

Java设计模式---创建型模式

本章Java设计模式的创建型模式的介绍,是通过学习视频记录的笔记,欢迎指出错误点,可关注公众号:Java探索学者,进行更深入的探讨!

weixin_43839793的博客 1168

【设计模式笔记20】:创建型设计模式对比总结

创建型设计模式概述: 创建型模式专注于对象创建过程的抽象,将对象创建与使用分离,提升代码清晰度和可维护性。遵循单一职责和开闭原则,通过封装创建逻辑降低耦合度。GoF23种模式中包含5种创建型模式:工厂方法、抽象工厂、单例、建造者和原型模式。按处理对象可分为类创建型(如工厂方法)和对象创建型(如抽象工厂)。各模式适用场景不同:单例确保唯一实例,工厂方法处理单一产品扩展,抽象工厂管理产品族,建造者分步构建复杂对象。建议初学者从简单工厂和单例入手,根据实际需求权衡设计复杂度,避免过度设计。

lyh2004_08的博客 785

【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂模式、原型模式、建造者模式。

实用技术干货分享⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄对您有用的话请点个关注吧~ 1076

设计模式汇总

创建新模式 提供了一种在创建对象的同事隐藏创建逻辑的方式,而不是使用new运算符直接实例化对象。这使得程序在判断针对某个给定的实例需要创建哪些对象时更加灵活。 工厂模式 抽象工厂模式 单例模式 创建者模式 原型模式 结构型魔术 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得最新功能的方式。 适配器模式 桥接模式 过滤器模式 组合模式 装饰器模式 外观模式 享元模式...

曾经蜡笔没有小新 169
上一篇: C++本质
下一篇: 设计模式之结构模式(全)
biblereader
博客等级 码龄20年 11粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值