结构型设计模式

简介: 结构型设计模式

单例模式

保证一个类仅有一个实例,并提供一个该实例的全局访问点。

template<typename T>
class Singleton {
   
public:
    static T& GetInstance() {
   
        static T instance; 
        return instance;
    }
protected:
    virtual ~Singleton() {
   }
    Singleton() {
   } 
private:
    Singleton(const Singleton &) = delete; //拷⻉构造
    Singleton& operator=(const Singleton&) = delete;//拷贝赋值构造
    Singleton(Singleton &&) = delete;//移动构造
    Singleton& operator=(Singleton &&) = delete;//移动拷贝构造
};
class DesignPattern : public 
Singleton<DesignPattern> {
   
    friend class Singleton<DesignPattern>; 
private:
    DesignPattern() {
   }
    ~DesignPattern() {
   }
};

工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。用于实现一个导出数据的接口,让客户选择数据的导出方式。

抽象工厂

提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。用于实现一个拥有导出导入数据的接口,让客户选择数据的导出导入方式

装饰器

动态地给一个对象增加一些额外的职责。就增加功能而言,装饰器模式比生产子类更为灵活。

组合模式

将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性

目录
相关文章
|
C#
C#一分钟浅谈:委托与事件的实现方式
本文详细介绍了C#编程中委托与事件的基础知识及应用场景。首先解释了委托的概念,包括定义与使用方法;接着介绍了事件这一基于委托的特殊类型,展示了如何在类中定义事件及跨类订阅与处理事件;最后讨论了常见问题如事件未处理异常、重复订阅及内存泄漏等,并提出了相应的解决方案。通过本文,读者将全面掌握委托与事件的使用技巧,提升应用程序的设计与开发水平。
457 7
|
C++ 容器
C++中左值和右值的深入解析
C++中左值和右值的深入解析
194 0
C++中左值和右值的深入解析
|
C++ 安全 存储
C++智能指针解析
C++智能指针解析
334 0
C++智能指针解析
|
编译器 C#
C#中内置的泛型委托Func与Action
C#中内置的泛型委托Func与Action
457 4
C#中的委托(一)
C#中的委托(一)
178 1
C#||委托和事件的实例
C#||委托和事件的实例
196 0
|
存储 安全 C#
C# - 委托与事件
这篇文档介绍了C#中的委托和事件。委托是存储方法引用的类型,支持回调、事件处理,具有引用方法、类型安全、多播性等特性,并在异步编程中发挥作用。事件是委托的封装,提供保护和订阅机制,防止外部直接访问。当需要在类内部控制方法调用,防止外部误触发时,可使用事件。
329 2
|
C#
C#的基本语法结构学习
【5月更文挑战第17天】C#基础语法包括变量(如`int x = 10`)、常量(`const int MAX_VALUE = 100`)、运算符(如算术和比较运算符)、控制语句(if、for、while等)和函数声明(`int Add(int x, int y) { return x + y; }`)。这些构成C#程序的基本元素。
280 0
c#委托详解
c#委托详解
176 0