- 1、本文档共51页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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模式演示 #includeiostream using namespace std;
class Product { public:
Product(){}
virtual ~Product(){} };
class ConcreteProduct:public Product { public:
ConcreteProduct()
{ coutconstruction of ConcreteProductendl; } virtual ~ConcreteProduct()
{ coutdestruction of ConcreteProductendl; } };
class Creator
{ public:
Creator(){}
virtual ~Creator(){}
void AnOperation() {
Product* p = FactoryMethod();
coutan operation of productendl; }
protected:
virtual Product* FactoryMethod()=0; };
class ConcreteCreator:public Creator
{ public:
ConcreteCreator()
{ coutconstruction of ConcreteCreatorendl; }
virtual ~ConcreteCreator()
{ coutdestruction of ConcreteCreatorendl; }
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 和 ProductB 的不同实现),而负责生产汉堡和鸡腿的
就是之前提过
文档评论(0)