常见设计模式的解析和实现(C++)整理版

常见设计模式的解析和实现(C++)整理版

ID:41158052

大小:896.51 KB

页数:51页

时间:2019-08-17

常见设计模式的解析和实现(C++)整理版_第1页
常见设计模式的解析和实现(C++)整理版_第2页
常见设计模式的解析和实现(C++)整理版_第3页
常见设计模式的解析和实现(C++)整理版_第4页
常见设计模式的解析和实现(C++)整理版_第5页
资源描述:

《常见设计模式的解析和实现(C++)整理版》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、常见设计模式的解析和实现常见设计模式的解析和实现(C++)之一-Factory模式作用:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。UML结构图:抽象基类:1)Product:创建出来的对象的抽象基类.2)Factory创建对象的工厂方法的抽象基类.接口函数:l)Creator::FactoryMethod:纯虚函数,由派生类实现,创建出对应的Product.解析:在这个模式中,有两个抽象基类,一个是Product为创建出来的对象的抽

2、象基类,一个是Factory是工厂的抽象基类,在互相协作的时候都是由相应的Factory派生类来生成Product的派生类,也就是说如果要新增一种Product那么也要对应的新增一个Factory,创建的过程委托给了这个Factory.也就是说一个Factory和一个Product是一一对应的关系.备注:设计模式的演示图上把Factory类命名为Creator,下面的实现沿用了这个命名.演示实现://Factory.cpp//factory模式演示#includeusingnam

3、espacestd;classProduct{public:Product(){}virtual~Product(){}};classConcreteProduct:publicProduct{public:ConcreteProduct(){cout<<"constructionofConcreteProduct"<

4、public:Creator(){}virtual~Creator(){}voidAnOperation(){Product*p=FactoryMethod();cout<<"anoperationofproduct"<

5、reator"<AnOperation();deletep;return0;}常见设计模式的解析和实现(C++)之二-A

6、bstractFactory模式作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。UML结构图:抽象基类:1)ProductA,ProductB:分别代表不同类型的产品,而它们的派生类则是这种产品的一个实现.2)AbstractFactory:生产这一系列产品的一个抽象工厂,它的派生类是不同的实现.接口函数:1)AbstractFactory::CreateProductA和AbstractFactory::CreateProductB:分别是生产不同产品的不同的实现,由各个

7、派生出来的抽象工厂实现之.解析:AbstractFactory模式和Factory最大的差别就是抽象工厂创建的是一系列相关的对象,其中创建的实现其实采用的就是Factory模式的方法,对于某个实现的有一个派生出来的抽象工厂,另一个实现有另一个派生出来的工厂,等等.可以举一个简单的例子来解释这个模式:比如,同样是鸡腿(ProductA)和汉堡(ProdUctB),它们都可以有商店出售(AbstractFactory),但是有不同的实现,有肯德基(COncreateFactoryl)和麦当劳(Concr

8、eateFactory2)两家生产出来的不同风味的鸡腿和汉堡(也就是ProductA和ProductB的不同实现),而负责生产汉堡和鸡腿的就是之前提过的Factory模式了.抽象工厂需要特别注意的地方就是区分不同类型的产品和这些产品的不同实现.显而易见的,如果有n种产品同时有m中不同的实现,那么根据乘法原理可知有n*m个Factory模式的使用.实现://abstract_factory.cpp#includeusingnamespacestd;/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。