23种设计模式之(十一)外观模式(python_c++实现)

Python封装技术:隐藏实现细节的工程实践 在面向对象编程中,封装是三大核心特性之一,它通过隐藏对象内部状态和实现细节来降低系统复杂度。Python作为动态语言,虽然默认所有成员都是公开的,但通过命名约定、属性装饰器、描述符协议等机制,可以实现不同级别的访问控制。良好的封装能提升代码可维护性,特别是在大型项目和API开发中,它能有效隔离变化,减少模块间的耦合。现代Python工程实践中,结合@property、abc模块和类型提示,可以在保持灵活性的同时实现严格的接口约束。这些技术在微服务架构、库/框架开发和数据分析管道等场景中尤为重要,比如用抽象基 阅读详情

23种设计模式之(十一)外观模式(Facade)

本文主要介绍23种设计模式之外观模式,附详细python/c++示例代码。
- 概念
- 应用场景
- 注意事项
- 代码示例
- 总结
- 代码链接


外观模式(Facade)

概念

外观模式,Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面,这个一致的简单的界面被称作facade,它向现有的系统添加一个接口,来隐藏系统的复杂性,这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

GoF对外观模式的定义是:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

应用场景

(1)、为复杂的模块或子系统提供外界访问的模块。

( 2)、子系统相对独立。

代码示例

C++代码示例

/************************************************************************/
/* 设计模式专题
/*
/* 外观模式
/*
/* Author  : zzl
/*
/* 编程环境: window10 vs2010
/*
/* Date    : 20180916
/************************************************************************/

#include <iostream>


class SubSystemA
{
public:
    void doThing()
    {
        printf("SubSystemA run\n" );
    }
};

class SubSystemB
{
public:
    void doThing()
    {
        printf("SubSystemB run\n" );
    }
};

class SubSystemC
{
public:
    void doThing()
    {
        printf("SubSystemC run\n" );
    }
};


class Facade
{
public:
    Facade()
    {
        sysA = new SubSystemA;
        sysB = new SubSystemB;
        sysC = new SubSystemC;
    }
    ~Facade()
    {
        delete sysA;
        delete sysB;
        delete sysC;
    }
public:
    void doThing()
    {
        sysA->doThing();
        sysB->doThing();
        sysC->doThing();
    }
protected:
private:
    SubSystemA *sysA;
    SubSystemB *sysB;
    SubSystemC *sysC;
};

void main()
{
    Facade *f = new Facade;
    f->doThing();
    delete f;
}

python代码示例

# -*- coding: utf-8 -*-
###################################################################
# 设计模式专题
# 
# 外观模式
# 
# Author  : zzl
# 
# 编程环境: window10 python2.7
# 
# Date    : 20180916
##################################################################

class SubSystemA(object):
    def do_thing(self):
        print("SubSystemA run")


class SubSystemB(object):
    def do_thing(self):
        print("SubSystemB run")


class SubSystemC(object):
    def do_thing(self):
        print("SubSystemC run")


class Facade(object):
    def __init__(self):
        self.sysA = SubSystemA()
        self.sysB = SubSystemB()
        self.sysC = SubSystemC()

    def do_thing(self):
        self.sysA.do_thing()
        self.sysB.do_thing()
        self.sysC.do_thing()


if __name__ == "__main__":
    f = Facade()
    f.do_thing()



源码链接

设计模式(十一)外观模式示例代码(python–c++)

Python设计模式:从代码复用到系统架构的实践指南 设计模式不是银弹,而是帮助我们写出更清晰、更易维护代码的工具。在Python世界中,应充分发挥语言特性,避免生搬硬套。好的设计模式实现应该像“隐形”的基础设施——存在却不引人注意,默默支撑着系统的稳定运行。 阅读详情

相关推荐

14、设计模式在Python中的应用

本文详细介绍了多种设计模式在Python中的应用,涵盖创建型、结构型和行为型模式。通过具体代码示例,展示了单例模式、适配器模式、观察者模式、模板方法模式等常见设计模式的实现方式。此外,还探讨了外观模式、装饰器模式、组合模式等高级模式,并总结了设计模式在构建模块化、可维护软件系统中的重要性。

ol789012的博客 60

Microsoft Azure开发实战-丁宋涛-专题视频课程

使用Microsoft Azure进行云平台的实践开发

dzy1122的专栏 441

《Python3案例和总结》-专栏介绍和目录

本专栏专注于Python基础和进阶的系统讲解,逐步深入实际应用场景到python高级特性,让你轻松学会用Python解决各种实际问题。不管是零基础还是有经验的开发,相信都能从本专栏获益。

数据知道的博客 1万+

23种设计模式之(二十)访问者模式(python_c++实现)

23种设计模式之(二十)访问者模式(Visitor) 本文主要介绍23种设计模式之访问者模式,附详细python/c++示例代码。 概念 应用场景 注意事项 代码示例 总结 代码链接 访问者模式(Visitor) 概念 在访问者模式(Visitor)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根...

zzl_python的博客 492

华为防火墙USG6000系列多ISP上网(通过WEB界面设置)

华为防火墙多ISP上网,内网分区上网。内网多网段不同上网方式。

daxihe880的博客 1万+

MATLAB功率谱函数psd与pwelch的使用

在网上看到 clear; Fs=1000; n=0:1/Fs:1; y=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); Nfft=1000; window=hanning(100); noverlap=20; dflag='none'; [Pxx,f]=psd(y,Nfft,Fs,window,noverlap); figure plot(f,10*log10(Pxx)); xlabel('frequency/Hz');ylab

qq_41687938的博客 2万+

23种设计模式教程目录

本教程系统性地介绍GoF(Gang of Four)提出的23种经典设计模式,从基础理论到实际应用,构建完整的设计模式知识体系。教程面向软件开发人员、架构师和计算机专业学生,通过理论讲解、代码实现、UML图解和实战案例,帮助读者深入理解和熟练运用设计模式。适用人群:学习收益:掌握设计模式基础理论,理解面向对象设计原则学习三大类设计模式,通过代码实践加深理解掌握复杂模式的应用场景和组合使用能够在实际项目中灵活运用设计模式解决复杂问题建议学习节奏:

wyl703的博客 993

从零开始掌握OBD-II:汽车诊断开发的核心技术与实战解析

本文深入解析OBD-II汽车诊断系统的核心技术,包括ECU通信协议、故障码解析及诊断工具开发实战。通过详细的协议分析和代码示例,帮助开发者快速掌握汽车诊断开发技能,实现从零到精通的进阶。特别适合从事汽车电子开发和OBD检测的技术人员参考学习。

weixin_42528780的博客 438

【23种设计模式】模式背后运用的技术对照

本文详细介绍了软件设计中的三大类设计模式:结构型模式、创建型模式和行为型模式。结构型模式包括适配器、桥接、组合、装饰器、外观、享元和代理模式,用于处理类或对象之间的组合关系。创建型模式涵盖单例、工厂方法、抽象工厂、建造者和原型模式,专注于对象的创建机制。行为型模式涉及策略、模板方法、观察者、迭代器、责任链、命令、备忘录和状态模式,主要处理对象之间的职责分配和通信。每种模式都提供了技术要点和相关技术的应用示例,帮助开发者理解和应用这些设计模式以构建灵活、可维护的软件系统。

键盘爱好者 1368

【tips】在PyCharm中安装opencv图文版详细教程

pip如下图所示,左边的蓝色图标就是终端。点开终端后,键入命令,按下回车后就开始下载了。如果你更喜欢图形化操作,可以在 PyCharm 中直接安装:。点击右上角的 +按钮(添加包)。搜索或,点击。

zhousanguhe的博客 6741

Android 10.0 SystemUI 屏蔽状态栏消息推送弹出的悬浮通知

在状态栏中,有一些通知类似 消息推送 弹出的 悬浮通知,弹出30秒之后会消失掉 要想屏蔽掉这些通知,首选知道这些通知是怎么产生的 通知类型 NotificationContentInflater.java 详细的介绍各种通知的类型 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java /** * The defau

安卓兼职framework和app工程师的博客 1542

23种设计模式之(十二)享元模式(python_c++实现)

23种设计模式之(十二)享元模式(Flyweight) 本文主要介绍23种设计模式之享元模式,附详细python/c++示例代码。 - 概念 - 应用场景 - 注意事项 - 代码示例 - 总结 - 代码链接 享元模式(Flyweight) 概念 享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改...

zzl_python的博客 201

【深度学习驱动流体力学】Python流体力学Ansys Fluent

PyFluent 是一个将 Python 编程语言与 Ansys Fluent 流体动力学 (CFD) 仿真软件集成的工具。它允许用户通过 Python 脚本来控制和自动化 Fluent 中的仿真任务,实现从预处理、求解到后处理的全流程控制。PyFluent 结合了 Python 的灵活性和 Fluent 的强大功能,提供了一种高效且灵活的 CFD 仿真方法。PyFluent 是一个强大而灵活的工具,使用户能够通过 Python 脚本全面利用 Ansys Fluent 的功能。

源代码杀手的博客 3123

大话设计模式_设计模式Python版系列介绍:1、设计模式简介、类型、原则

今天开始准备写一个设计模式系列的Python版本,网上有很多Java、C++版本的,Python版本的相对来说比较零散,从今天开始,我会系统的介绍每个设计模式的Python实现。首先介绍一下什么是设计模式(Design Pattern):一句话解释一下:设计模式是面向对象编程时,如何定义类与类、类与对象、类与方法的各种组合方式的经验实践,都是前人的经验!通过在合适的场景下,选择合适的设计模式,对我...

weixin_39681644的博客 121

Autosar软件组件分析及ARXML文件分析

Autosar软件组件分析及ARXML文件分析

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 3601

应用商店评论分析实战:Python逆向工程破解Google Play加密接口与NLP建模

在移动互联网时代,应用商店中的用户评论成为了开发者优化应用、提升用户体验的重要依据。然而,Google Play等应用商店对评论数据进行了加密处理,直接爬取难度较大。本文将介绍如何使用Python逆向工程破解Google Play的加密接口,实现对应用商店评论的实时采集,并结合NLP(自然语言处理)技术进行情感分析和主题建模,为开发者提供有价值的数据支持。

u014481728的博客 1348

设计模式 可复用面向对象软件的基础_设计模式导言【Python篇】

喜欢就关注我们吧!设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。从设计模式的定义就不难得出一个结论,设计模式是一个值得我们去深入学习并且掌握的东西。学习设计模式除了对我们的编码能力有提升外,也能够帮助我们在面试中脱...

weixin_39563132的博客 113

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C/C++ 知识点-设计模式总结(C++和Python实现)

GoF的23种设计模式,包括创建型、结构型和行为型,其涵盖了面向对象思想的精髓以及诸多细节。本文结合《设计模式》和《大话设计模式》,并用C++和Python实现了《大话设计模式》中的23种模式案例。案例实现《大话设计模式》C++版《大话设计模式》Python版抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口,只需要知道对象的系列,无需知道具体的对象。在客户端中,具体工厂类只在初始化时出现一次,更改产品系列即可使用不同产品配置。...

m0_58687318的博客 367

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python与建筑结构设计_设计模式总结(C++和Python实现)

Design Patterns前言GoF的23种设计模式,包括创建型、结构型和行为型,其涵盖了面向对象思想的精髓以及诸多细节。本文结合《设计模式》和《大话设计模式》,并用C++和Python实现了《大话设计模式》中的23种模式案例。原文首发于个人博客Jennica.Space。案例实现创建型模式工厂方法模式(Factory Method)工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪...

weixin_39963744的博客 462

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

《大话设计模式》Python 版代码实现

From:http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html 一、简单工厂模式 模式特点:工厂根据条件产生不同功能的类。 程序实例:四则运算计算器,根据用户的输入产生相应的运算类,用这个运算类处理具体的运算。 代码特点:C/C++中的switch...case...分支使用字典的方...

freeking101的博客 3953

大话设计模式--Python

作者:五岳出处:http://www.cnblogs.com/wuyuegb2312 上一周把《大话设计模式》看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多、偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界。《大话设计模式》的代码使用C#写成的,而在本人接触到的面向对象语言中,只对C++和Python还算了解,为了加深对各个模式的理解,我在网上下载了一个C++版的源代码,并...

weixin_30389003的博客 205

结构型设计模式解析:适配器、桥接等7种模式实战

结构型设计模式是面向对象编程中的核心概念,主要用于处理类与对象之间的组合关系。这类模式通过定义清晰的接口和层次结构,显著提升代码的可复用性和扩展性。其核心原理包括接口适配、功能扩展和结构简化等关键技术,在系统架构设计中具有重要价值。典型应用场景包括第三方库整合、跨平台开发、复杂系统封装等工程实践。适配器模式通过转换接口解决兼容性问题,桥接模式分离抽象与实现以应对多维度变化,而装饰器模式则实现了运行时功能的动态扩展。掌握这些模式能有效解决软件开发中的接口设计、系统解耦等常见挑战。

weixin_30786657的博客 316

生活中的设计模式——启程之前,请不要错过我

两年前优快云出一个产品叫ink,旨在提供一个高质量写作环境。那时就有写这一系列的想法了,而且也确实写了,就在ink里写了三篇文章,后来不知道因为什么原因这个产品下架了,我的三篇文章也没了,这事也就一直被我搁置下来,直到今天。今天,我想重新开始,以全新的方式和思路重写这一系列文章! 文章的特点:从生活的小故事开始,由浅入深,逐步阐述设计模式的思想,并抽象...

weixin_34301307的博客 199

简单工厂模式、工厂模式、抽象工厂模式比较

前言: 设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。 一般我们会说设计模式一共有23种,总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命

xuangelouzhu的博客 944

传送门(portal)

Linux operation(Linux运维) #RHEL/CentOS/fedora系列为主   Basis:   Kernel:     常见系统调用   Commands:     trouble shooting命令详解目录   Services:     SSH:     各种文件系统FileSystem:     NFS:     F...

weixin_30919919的博客 211
上一篇: 23种设计模式之(十)桥接模式(python_c++实现)
下一篇: 23种设计模式之(十二)享元模式(python_c++实现)
zzl_python
博客等级 码龄8年 21粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值