当前位置: 首页 > news >正文

遵义网站制作小程序网站设计目的与规划怎么写

遵义网站制作小程序,网站设计目的与规划怎么写,互联网公司用wordpress,东莞市品牌网站建设报价基本概念 工厂模式是一种创建型设计模式,用于将对象的创建逻辑与使用者分离,以实现对象的创建和使用的解耦。工厂模式提供了一个统一的接口来创建对象,而客户端代码只需通过该接口来请求所需的对象,而不需要知道具体的对象创建细…

基本概念

工厂模式是一种创建型设计模式,用于将对象的创建逻辑与使用者分离,以实现对象的创建和使用的解耦。工厂模式提供了一个统一的接口来创建对象,而客户端代码只需通过该接口来请求所需的对象,而不需要知道具体的对象创建细节。

工厂模式的各种部件为:

  • 工厂(Factory):实现了工厂接口,负责创建具体产品的对象。
  • 产品(Product):工厂方法创建的具体实例对象。

使用场景

  • 对象创建逻辑复杂,可能涉及到配置解析、条件判断等逻辑时。

  • 对象类型不明确,对象的具体类型可能在运行时才能确定,例如根据用户的输入或配置来决定创建哪种对象时。

  • 需要隐藏对象创建细节,只暴露一个统一的接口给客户端使用时。

  • 需要扩展对象创建,如果需要向系统中添加新的产品类,而不影响现有代码时。

  • 需要创建的对象具有共同的接口时。                                                                                                                                                                                                            

实现

例子

假设我们有一个形状(Shape)的抽象基类,以及两个具体的形状类:圆形(Circle)和矩形(Rectangle)。创建一个形状工厂(ShapeFactory):

// 抽象基类 Shape
class Shape {
public:virtual void draw() = 0;virtual ~Shape() {}
};// 具体类 Circle
class Circle : public Shape {
public:void draw() override {std::cout << "Drawing Circle" << std::endl;}
};// 具体类 Rectangle
class Rectangle : public Shape {
public:void draw() override {std::cout << "Drawing Rectangle" << std::endl;}
};// 形状工厂类 ShapeFactory
class ShapeFactory {
public:// 根据类型创建相应的形状对象static Shape* createShape(const std::string& type) {if (type == "Circle") {return new Circle();} else if (type == "Rectangle") {return new Rectangle();}return nullptr;}
};int main() {// 使用工厂创建不同类型的形状对象Shape* circle = ShapeFactory::createShape("Circle");Shape* rectangle = ShapeFactory::createShape("Rectangle");return 0;
}

QObject 工厂

继承了QObject的类,可以通过 Q_INVOKABLE 和 QMetaObject::newInstance 来实现工厂模式,需要把产品类的构造函数声明为Q_INVOKABLE,并调用QObject::staticMetaObject.newInstance()函数。


class Product : public QObject
{Q_OBJECT
public:Q_INVOKABLE explicit Product(QObject *parent = nullptr);
};int main(){QObject *object= Product::staticMetaObject.newInstance();}

单例模式

单例模式也可以看成是工厂模式的一种实现,其隐藏了创建对象的细节,确保在程序中类只有一个实例。

QT设计模式:单例模式

http://www.yayakq.cn/news/42634/

相关文章:

  • 网站js时间代码找灵感的网站
  • 电子商务个人网站可以备案吗网站维护需要的知识
  • 成都网站开发建设银川商城网站建设
  • e盒印网站开发俄罗斯国家馆电商平台
  • 网站运营推广选择乐云seocc域名做网站好吗
  • 自己网站做虚拟币违法吗怎样修改网站的主页内容
  • 自己做片头的网站网站开发运行环境论文
  • 网站图片像素多少湖北做网站找谁
  • 给一瓶水做网站欧洲vodafonewifi18mmpcc
  • 电商网站商品详情页ftp上传网站后怎么弄
  • 鄱阳县建设局网站网站设计的一般流程是什么
  • 在线做动图的网站广州谷歌seo公司
  • 找做网站公司经验表格布局网站
  • 网站底部分享怎么做成都网站建设的公司
  • 钢铁行业公司网站模板企业网站建设推荐乐云seo
  • 服务器购买网站惠州关键词排名提升
  • 专门做网站建设的公司wordpress搬家出问题
  • 网站被封怎么论坛交流平台
  • 易语言网站做软件下载网络推广培训教程
  • 权重6网站怎么做在线测网速
  • 济南教育加盟网站建设提供网站建设课程报告
  • 关于网站运营天河网站建设价格
  • 淘宝内部优惠券网站怎么建设十几万 建设网站
  • 广州移动 网站建设上上海网站设计建设
  • 算命 网站开发大数据技术与应用
  • 用dw如何做网站首页网站域名解析登陆
  • 0建设营销型网站步骤东莞企石网站设计
  • 用树莓派做网站做网站文案策划步骤
  • 正规的彩票网站怎么做最新版的wordpress
  • 哪里的网站建设私人设计网站推荐