抽象工厂(创建型模式)

来源:互联网 发布:中国国家数据库 编辑:程序博客网 时间:2024/06/15 11:57
       提供一个创建一系列相关或者相互依赖对象的接口,而无需指定具体的类。比如我有两套界面,当我想切换的时候怎么才能最少改变代码,而又不影响结构呢。
我们提供一个抽象工厂来提供创建一套界面的方法,具体的两套界面分别基础这个抽象工厂方法。具体看下面的代码
 
class WindowFactory{public:virtual void CreateMainWindow() = 0;virtual void CreateMenuWindow() = 0;virtual void CreateAreaWindow() = 0;};class ClassicWindow : public WindowFactory{public:virtual void CreateMainWindow(){cout<<"经典界面主窗口"<<endl;}virtual void CreateMenuWindow(){cout<<"经典界面菜单窗口"<<endl;}virtual void CreateAreaWindow(){cout<<"经典界面显示窗口"<<endl;}};class NewWindow : public WindowFactory{public:virtual void CreateMainWindow(){cout<<"新界面主窗口"<<endl;}virtual void CreateMenuWindow(){cout<<"新界面菜单窗口"<<endl;}virtual void CreateAreaWindow(){cout<<"新界面显示窗口"<<endl;}};class Client{public:Client(WindowFactory* wf) : m_windowFactory(wf){}public:void CreateMainWindow(){m_windowFactory->CreateMainWindow();}void CreateMenuWindow(){m_windowFactory->CreateMenuWindow();}void CreateAreaWindow(){m_windowFactory->CreateAreaWindow();}private:WindowFactory* m_windowFactory;};int _tmain(int argc, _TCHAR* argv[]){Client client1(new ClassicWindow);client1.CreateMainWindow();client1.CreateMenuWindow();client1.CreateAreaWindow();Client client2(new NewWindow);client2.CreateMainWindow();client2.CreateMenuWindow();client2.CreateAreaWindow();return 0;}

0 0
原创粉丝点击