【设计模式】工厂模式

    xiaoxiao2021-03-25  58

    工厂模式

    作用:定义一个用于创建对象的接口,让子类决定实例化哪一个类。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; }

    转载请注明原文地址: https://ju.6miu.com/read-38578.html

    最新回复(0)