C++进阶(语法篇)—第11章 设计模式

本文介绍了设计模式的概念及其重要性,特别是由GoF提出的23种设计模式。文章深入探讨了创建型模式中的工厂模式(简单工厂、工厂方法、抽象工厂)和单例模式。通过代码示例展示了工厂模式的三种类型,以及如何通过抽象工厂模式解决扩展问题。此外,还解释了单例模式的实现,确保类只有一个实例并提供全局访问点。
摘要由CSDN通过智能技术生成

11.设计模式

11.1 GoF和Design Patterns

1994年,由4位大牛(GoF)合著出版了《Design Patterns: Elements of Reusable Object-Oriented Software》一书,中文翻译为《设计模式》。该书首次提出了软件开发中设计模式的概念,将设计模式规范化并提升到了理论高度。在书中提及了23种设计模式,这些模式可以分为3类:创建型模式、结构型模式、行为型模式。设计模式遵守的6大设计原则:单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则。

单一职责原则:一个类只负责功能领域中的一个职责。即一个类不要承载太多的功能,职责尽可能单一。

开闭原则(开放封闭原则):封闭是指当一个设计好了,功能稳定后,若想增加新的功能,不要修改原来的代码;开发是指虽然类的代码不能修改,但是可以扩展,对原代码扩展来增加需要的功能。

里氏替换原则:派生类对象可以替换基类对象,即上行转换;但是基类对象不能替换派生类对象。

依赖倒置原则:上层调用下层,上层依赖下层,当下层产生变动时会影响上层,因此需要提供一个抽象类界面作为上下层之间的接口。

接口隔离原则:使用多个专门的接口,而不使用单一的总接口,类似于单一职责原则。

迪米特法则:若2个类无直接通信,则这2个类就不要发生直接的相互作用。避免当一个类发生改变时,会影响另一个类。

由于23种设计模式太多,本章主讲常用的13种设计模式。

11.2创建型模式

创建型模式:用于构建对象,以便它们可以从实现系统中分离出来。主要讲工厂模式(简单工厂、工厂方法、抽象工厂)和单例模式。

11.2.1工厂模式

工厂模式分为3种:简单工厂模式、工厂方法模式、抽象工厂模式。

//简单工厂模式

#include <iostream>

 

using namespace std;

enum PhoneType { honor,mate};

 

//华为手机

class Huawei

{

public:

virtual ~Huawei() {}

virtual void call(void) = 0;

};

 

//华为旗下的荣耀

class Honor :public Huawei

{

public:

virtual void call(void)

{

cout << "Honor Phone" << endl;

}

};

 

//华为旗下的Mate

class Mate :public Huawei

{

public:

virtual void call(void)

{

cout << "Mate Phone" << endl;

}

};

 

//华为手机的生产工厂

class Huawei_Factory

{

public:

Huawei * CreatePhone(PhoneType type)

{

switch (type)

{

case honor:

return new Honor;

case mate:

return new Mate;

default:

return NULL;

}

}

 

};

 

int main()

{

Huawei_Factory hf;

Huawei * ho = hf.CreatePhone(honor);

ho->call();

Huawei * ma = hf.CreatePhone(mate);

ma->call();

delete ho;

delete ma;

 

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值