设为首页 加入收藏

TOP

factory mothed pattern--工厂方法模式
2013-01-01 14:40:23 来源: 作者: 【 】 浏览:273
Tags:factory mothed pattern-- 工厂 方法 模式

factory mothed pattern,称工厂方法模式

首先我们看看Gof怎么定义工厂方法模式的:

“Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.”  - GoF

"为创建一个对象而定义一个接口,让子类决定哪个类实例化,工厂方法模式使类的实例化延迟到子类"-GoF

抽象工厂(AbstractFactory)     是工厂方法模式的核心。具体工厂必须实现在抽象工厂中定义的抽象方法。

具体工厂(ConcreteFactory)   实现抽象工厂中定义的所有抽象方法,包含与业务密切相关的逻辑。

抽象产品(AbstractProduct)     所有具体产品的超类,亦即具体产品的共同父类。

具体产品(ConcreteProduct)   这个角色实现了抽象产品角色所定义的接口。

C++(www.cppentry.com)中,其实就是运用的C++(www.cppentry.com)多态性质。
实例:
一个工厂生产奔驰轿车,一个工厂生成奥迪轿车,同时要进行测试。
 1class Car 2{ 3public: 4virtualvoid run( )=0; 5}; 6 7class AudiCar:public Car 8{ 9public:10void run( );11};12void AudiCar::run( )13{14         std::cout<<"Audi is running"<<std::endl;15} 1617class BenzCar:public Car18{19public:20void run( );21}22void BenzCar::run( )23{24         std::cout<<"Benz is running"<<std::endl;25};2627class CarFactory28{29public:30virtual Car * createCar( )=0;31};3233class AudiCarFactory:public CarFactory34{35public:36         Car * createCar( );37};38 Car * AudiCarFactory::createCar( )39{40returnnew AudiCar( );41}4243class BenzCarFactory:public CarFactory44{45public:46         Car * createCar( );47};48 Car* BenzCarFactory::createCar( )49{50returnnew BenzCar( );51}5253void createAndTest(CarFactory* p)54{55     car* c=p->createCar( );56     c->run( );57    delete c;58}5960int main (int argc,char* argv)61{62     CarFactory * p1 =new BenzCarFactory( );        //由子类决定实例化对象63     CarFactory * p2 =new AudiCarFactory( );64    createAndTest(p1);65    createAndTest(p2);66    delete p1;67    delete p2;68return0;69 }

 

运行结果:

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇abstract factory pattern--抽象.. 下一篇singleton pattern--单件模式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: