常见设计模式的解析和实现(计算机c++)整理版.doc

常见设计模式的解析和实现(计算机c++)整理版.doc

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常见设计模式的解析和实现 常见设计模式的解析和实现(C+ + )之一-Factory 模式 作用: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一 个类的实例化延迟到其子类。 UML 结构图: 抽象基类: 1) Product:创建出来的对象的抽象基类. 2) Factory 创建对象的工厂方法的抽象基类. 接口函数: l)Creator::FactoryMethod:纯虚函数,由派生类实现,创建出对应的 Product. 解析: 在这个模式中,有两个抽象基类,一个是 Product 为创建出来的对象的抽象基类,一个 是 Factory 是工厂的抽象基类,在互相协作的时候都是由相应的 Factory 派生类来生成 Product 的派生类,也就是说如果要新增一种 Product 那么也要对应的新增一个 Factory,创 建 的 过 程 委 托 给 了 这 个 Factory.也 就 是 说 一 个 Factory 和一个 Product 是一一对应的关系. 备注: 设计模式的演示图上把 Factory 类命名为 Creator,下面的实现沿用了这个命名. 演示实现: //Factory.cpp //factory模式演示 #include<iostream> using namespace std; class Product { public: Product(){} virtual ~Product(){} }; class ConcreteProduct:public Product { public: ConcreteProduct() { cout<<"construction of ConcreteProduct"<<endl; } virtual ~ConcreteProduct() { cout<<"destruction of ConcreteProduct"<<endl; } }; class Creator { public: Creator(){} virtual ~Creator(){} void AnOperation() { Product* p = FactoryMethod(); cout<<"an operation of product"<<endl; } protected: virtual Product* FactoryMethod()=0; }; class ConcreteCreator:public Creator { public: ConcreteCreator() { cout<<"construction of ConcreteCreator"<<endl; } virtual ~ConcreteCreator() { cout<<"destruction of ConcreteCreator"<<endl; } protected: virtual Product* FactoryMethod() { return new ConcreteProduct(); } }; int main() { Creator *p = new ConcreteCreator(); p->AnOperation(); delete p; return 0; } 常见设计模式的解析和实现(C++)之二-Abstract Factory模式 作用: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 UML 结构图: 抽象基类: 1)ProductA,ProductB:分别代表不同类型的产品,而它们的派生类则是这种产品的一 个实现. 2)AbstractFactory:生产这一系列产品的一个抽象工厂,它的派生类是不同的实现. 接口函数: 1)AbstractFactory::CreateProductA 和 AbstractFactory::CreateProductB: 分别是生产不同产品的不同的实现,由各个派生出来的抽象工厂实现之. 解析: Abstract Factory 模式和 Factory 最大的差别就是抽象工厂创建的是一系列相关的对象, 其中创建的实现其实采用的就是 Factory 模式的方法,对于某个实现的有一个派生出来的 抽象工厂,另一个实现有另一个派生出来的工厂,等等. 可以举一个简单的例子来解释这个模式:比如,同样是鸡腿(ProductA)和汉堡(Prod UctB),它们都可以有商店出售(AbstractFactory),但是有不同的实现,有肯德基(C OncreateFactoryl)和麦当劳(ConcreateFactory2)两家生产出来的不同风味的鸡 腿和汉堡(也就是 ProductA 和 P

文档评论(0)

汪汪队 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档