设计模式C++ (一)

简单工厂模式

#include<iostream>
#include<string>
using namespace std;

enum type{EWATER,ECREAM};
class SkinProduct{
public:
    virtual void createProduct()=0;
};

class Water:public SkinProduct{
public:
    void createProduct(){
        cout<<"creat water skin product."<<endl;
    }
};

class Cream:public SkinProduct{
public:
    void createProduct(){
        cout<<"create cream skin product."<<endl;
    }
};

class SkinFactory{
public:
    SkinProduct* creatOneProduct(type skinType){
        switch (skinType) {
            case EWATER:
                return new Water();
            case ECREAM:
                return new Cream();
            default:
                return NULL;
        }
    }
};
int main(){
    SkinFactory skf;
    SkinProduct *skp=skf.creatOneProduct(EWATER);
    delete skp;
    return 0;
}

不遵守开放封闭原则,当要增加新的护肤品种类时,需要修改工厂类

工厂方法模式

工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。它修正了简单工厂模式中不遵守开放—封闭原则。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

#include<iostream>
#include<string>
using namespace std;

class SkinProduct{
public:
    virtual void createProduct()=0;
};

class Water:public SkinProduct{
public:
    void createProduct(){
        cout<<"creat water skin product."<<endl;
    }
};

class Cream:public SkinProduct{
public:
    void createProduct(){
        cout<<"create cream skin product."<<endl;
    }
};

class SkinFactory{
public:
    virtual SkinProduct* creatOneProduct()=0;
};

class WaterFactory:pu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
目 录 序言 前言 读者指南 第 1 章 引言 1 1.1 什么是设计模式 2 1.2 Smalltalk MVC 中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 1.6.6 关联运行时刻和编译时刻的结构 15 1.6.7 设计应支持变化 16 1.7 怎样选择设计模式 19 1.8 怎样使用设计模式 20 第 2 章 实例研究:设计一个文档编辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 272.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor 和 Composition 27 2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 Monoglyph 30 2.4.3 Decorator 模式 32 2.5 支持多种视感标准 32 2.5.1 对象创建的抽象 32 2.5.2 工厂类和产品类 33 2.5.3 Abstract Factory 模式 35 2.6 支持多种窗口系统 35 2.6.1 我们是否可以使用 Abstract Factory 模式 35 2.6.2 封装实现依赖关系 35 2.6.3 Window 和 WindowImp 37 2.6.4 Bridge 模式 40 2.7 用户操作 40 2.7.1 封装一个请求 41 2.7.2 Command 类及其子类 41 2.7.3 撤消和重做 42 2.7.4 命令历史记录 42 2.7.5 Command 模式 44 2.8 拼写检查和断字处理 44 2.8.1 访问分散的信息 44 2.8.2 封装访问和遍历 45 2.8.3 Iterator 类及其子类 46 2.8.4 Iterator 模式 48 2.8.5 遍历和遍历过程中的动作 48 2.8.6 封装分析 48 2.8.7 Visitor 类及其子类 51 2.8.8 Visitor 模式 52 2.9 小结 53 第 3 章 创建型模式 54 3.1 Abstract Factory(抽象工厂)—对象创建型模式 57 3.2 Builder(生成器)—对象创建型模式 633.3 Factory Method(工厂方法)—对象创建型模式 70 3.4 Prototype(原型)—对象创建型模式 87 3.5 Singleton(单件)—对象创建型模式 84 3.6 创建型模式的讨论 89 第 4 章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型模式 92 4.2 Bridge(桥接)—对象结构型模式 100 4.3 Composite(组成)—对象结构型模式 107 4.4 Decorator(装饰)—对象结构型模式 115 4.5 FACADE(外观)—对象结构型模式 121 4.6 Flyweight(享元)—对象结构型模式 128 4.7 Proxy(代理)—对象结构型模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter 与 Bridge 144 4.8.2 Composite、 Decorator 与 Proxy 145 第 5 章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链)—对象行为型模式 147 5.2 COMMAND(命令)—对象行为型模式 154 5.3 INTERPRETER(解释器)—类行为型模式 162 5.4 ITERATOR(迭代器)—对象行为型模式 171 5.5 MEDIATOR(中介者)—对象行为型模式 181 5.6 MEMENTO(备忘录)—对象行为型模式 188 5.7 OBSERVER(观察者)—对象行为型模式 194 5.8 STATE(状态)—对象行为型模式 201 5.9 STRATEGY(策略)—对象行为型模式 208 5.10 TEMPLATE METHOD(模板方法)—类行为型模式 214 5.11 VISITOR(访问者)—对象行为型模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 5.12.4 对发送者和接收者解耦 229 5.12.5 总结 231 第 6 章 结论 232 6.1 设计模式将带来什么 2326.2 一套通用的设计词汇 23
### 回答1: 设计模式c pdf 是一本介绍常用设计模式的书籍,其中重点介绍了23种设计模式及其应用。这些设计模式分为三种类型:创建型模式、结构型模式和行为型模式。这些模式可以帮助开发人员更好地理解软件的结构和行为,并提供可重用代码的示例。此外,本书还包括有关设计模式的一些重要概念,例如单一职责原则、开放封闭原则等。 设计模式c pdf中的示例代码非常详细,每种模式都给出了适用场景、模式结构、优缺点和应用示例等说明。读者可以通过这些示例学习如何应用设计模式来解决问题,以及如何避免常见的设计错误和陷阱。此外,本书还探讨了一些在实际应用中可能遇到的问题,如性能考虑、扩展性和维护性等。 对于软件工程师和程序员来说,设计模式c pdf是一本非常有价值的参考书。通过学习这些设计模式,开发人员可以更好地理解和设计复杂系统,并编写出更加可靠和高效的代码。值得一提的是,设计模式c pdf并不需要读者具备过高的数学或编程技能,因此适合广大IT从业者参考。 ### 回答2: 设计模式C++是一种软件设计的实践方式,其目标是使软件模块具有可重用性、可扩展性和可维护性。设计模式C++有许多种不同的类型,而其中最常见的一种是面向对象设计模式设计模式C++具有以下特点: 1. 可重用性:设计模式C++的最主要目的是为开发者提供一系列的模板代码,这些代码能够被重复使用,从而减少重复工作并提高效率。 2. 可扩展性:设计模式C++也可以用于确保软件模块能够扩展,同时还能保留其核心功能和特性。 3. 可维护性:由于设计模式C++的使用可以减少代码冗余和混乱,因此也可以提高代码的可维护性,从而更轻松地维护和更新软件。 设计模式C++的分类主要有三种:创建型模式、结构型模式和行为型模式。创建型模式包括简单工厂、工厂方法、抽象工厂、单例模式、原型模式。结构型模式包括适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、代理模式。行为型模式包括观察者模式、备忘录模式、迭代器模式、模板方法模式、策略模式、职责链模式、命令模式、状态模式、访问者模式和中介者模式等。 在软件开发中,应该根据不同的需要选择不同的模式,灵活运用设计模式C++可以提高软件设计和开发的效率,同时也为我们的软件架构提供了更多的选择。 ### 回答3: 设计模式C++PDF是一本介绍C++编程语言中常用的设计模式的书籍。设计模式主要是指针对常见问题提出的一些解决方案,这些方案都经过了历史上许多著名开发者的实践验证和总结。设计模式都是固定的、时间不限的,由于程序员都有相似的问题,所以在解决同样的问题时都把经验总结下来,这就是设计模式存在并收集的原因。 设计模式C++PDF详细地介绍了每一种设计模式的思路和使用方式,让读者可以直观地了解它们。书中主要介绍了以下一些经典的设计模式:单例模式、工厂模式、观察者模式、适配器模式、代理模式、装饰者模式、状态模式、桥接模式、访问者模式、策略模式等。 单例模式是一种保证全局只有一个实例的方式,工厂模式可以解决对象创建的问题,观察者模式可以让主题和观察者之间解耦等等。这些设计模式在开发过程中都经常使用,并且得到了广泛的认可和应用。设计模式的核心是复用,让开发者们在开发过程中可以重用已经存在的代码,并提高开发效率。 总之,设计模式C++PDF是一本非常值得学习的书籍,里面介绍的设计模式已经得到了许多开发者的验证和应用,可以帮助读者更好地理解设计模式的思想并在实践中有效地应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值