您的位置:首页 > 新闻 > 会展 > 装修设计师怎么学室内装修设计_驻马店app和网站开发公司_百度热点榜单_谷歌排名优化

装修设计师怎么学室内装修设计_驻马店app和网站开发公司_百度热点榜单_谷歌排名优化

2025/10/19 3:18:27 来源:https://blog.csdn.net/joshua0137/article/details/143952571  浏览:    关键词:装修设计师怎么学室内装修设计_驻马店app和网站开发公司_百度热点榜单_谷歌排名优化
装修设计师怎么学室内装修设计_驻马店app和网站开发公司_百度热点榜单_谷歌排名优化

下面是一个使用抽象工厂模式来创建和配置桥接模式的示例,场景是创建不同操作系统的窗口(Window)及其对应的实现(WindowImpl)。我们将通过抽象工厂来创建不同操作系统下的窗口和实现。

代码示例

#include <iostream>// 抽象产品:窗口接口
class Window {
public:virtual void draw() = 0;virtual void resize() = 0;
};// 抽象产品:窗口实现接口
class WindowImpl {
public:virtual void drawImpl() = 0;virtual void resizeImpl() = 0;
};// 具体产品:Windows窗口
class WindowsWindow : public Window {
private:WindowImpl* impl;public:WindowsWindow(WindowImpl* impl) : impl(impl) {}void draw() override {std::cout << "Drawing Windows Window" << std::endl;impl->drawImpl();}void resize() override {std::cout << "Resizing Windows Window" << std::endl;impl->resizeImpl();}
};// 具体产品:Linux窗口
class LinuxWindow : public Window {
private:WindowImpl* impl;public:LinuxWindow(WindowImpl* impl) : impl(impl) {}void draw() override {std::cout << "Drawing Linux Window" << std::endl;impl->drawImpl();}void resize() override {std::cout << "Resizing Linux Window" << std::endl;impl->resizeImpl();}
};// 具体产品:Windows窗口实现
class WindowsWindowImpl : public WindowImpl {
public:void drawImpl() override {std::cout << "Drawing Windows Impl" << std::endl;}void resizeImpl() override {std::cout << "Resizing Windows Impl" << std::endl;}
};// 具体产品:Linux窗口实现
class LinuxWindowImpl : public WindowImpl {
public:void drawImpl() override {std::cout << "Drawing Linux Impl" << std::endl;}void resizeImpl() override {std::cout << "Resizing Linux Impl" << std::endl;}
};// 抽象工厂:窗口工厂接口
class WindowFactory {
public:virtual Window* createWindow() = 0;virtual WindowImpl* createWindowImpl() = 0;
};// 具体工厂:Windows窗口工厂
class WindowsWindowFactory : public WindowFactory {
public:Window* createWindow() override {return new WindowsWindow(createWindowImpl());}WindowImpl* createWindowImpl() override {return new WindowsWindowImpl();}
};// 具体工厂:Linux窗口工厂
class LinuxWindowFactory : public WindowFactory {
public:Window* createWindow() override {return new LinuxWindow(createWindowImpl());}WindowImpl* createWindowImpl() override {return new LinuxWindowImpl();}
};int main() {// 创建Windows窗口工厂WindowFactory* windowsFactory = new WindowsWindowFactory();// 使用Windows工厂创建窗口Window* windowsWindow = windowsFactory->createWindow();windowsWindow->draw();windowsWindow->resize();// 创建Linux窗口工厂WindowFactory* linuxFactory = new LinuxWindowFactory();// 使用Linux工厂创建窗口Window* linuxWindow = linuxFactory->createWindow();linuxWindow->draw();linuxWindow->resize();// 清理资源delete windowsFactory;delete windowsWindow;delete linuxFactory;delete linuxWindow;return 0;
}

代码说明

  1. Window:窗口接口,定义了 draw 和 resize 方法。
  2. WindowImpl:窗口实现接口,定义了 drawImpl 和 resizeImpl 方法。
  3. WindowsWindow 和 LinuxWindow:具体的窗口类,分别实现Windows和Linux系统的窗口。
  4. WindowsWindowImpl 和 LinuxWindowImpl:具体的窗口实现类,分别实现Windows和Linux系统的窗口实现。
  5. WindowFactory:抽象工厂接口,定义了 createWindow 和 createWindowImpl 方法。
  6. WindowsWindowFactory 和 LinuxWindowFactory:具体的工厂类,分别创建Windows和Linux系统的窗口及其对应的实现。
  7. main 函数:演示如何使用抽象工厂来创建和配置不同操作系统下的窗口。

通过这种方式,我们可以在不同的操作系统下创建和配置相应的窗口和实现,而不需要为每种操作系统创建大量的子类。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com