栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QtC++ 设计模式(一)——工厂模式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QtC++ 设计模式(一)——工厂模式

工厂模式
  • 序言
  • 环境
  • 理解
  • 源码

序言

这是一个简单理解的工厂模式,并未涉及复杂的构成方式。
本章节参考自菜鸟教程-工厂模式,理论方面点进去查看理解即可。
其实菜鸟教程已经写得很清楚了,但是我其实并不大想在JAVA下去理解和使用,所以我就在QtC++里再实现一次,当练手也当记录
.

环境

Qt5.12 C++
.

理解

该图并不遵守UML规范,只是单纯为了便于源码快速回忆及理解

.

源码

Fectory.h

#include 

class Shape
{
public:
    virtual ~Shape();
    
    virtual void draw();

    
    enum ShapeEnum {
        Rectangle,
        Square,
        Circle
    };
};

class Rectangle : public Shape
{
public:
    
    void draw() override;
};

class Square : public Shape
{
public:
    
    void draw() override;
};

class Circle : public Shape
{
public:
    
    void draw() override;
};

class ShapeFectory
{
public:
    
    static Shape *getShape(int shapeType );
};

.
Fectory.cpp

#include "fectory.h"

Shape::~Shape()
{

}

void Shape::draw()
{
    qDebug()<<"Shape";
}

void Rectangle::draw()
{
    qDebug()<<"Rectangle";
}

void Square::draw()
{
    qDebug()<<"Square";
}

void Circle::draw()
{
    qDebug()<<"Circle";
}

Shape *ShapeFectory::getShape(int shapeType)
{
    switch ( shapeType ) {
    case Shape::Rectangle:
        return new Rectangle();
    case Shape::Square:
        return new Square();
    case Shape::Circle:
        return new Circle();
    default:
        return nullptr;
    }
}

.
使用的地方

//使用智能指针指向返回的内存,该指针释放时一并释放。
QScopedPointer< Shape > shape( ShapeFectory::getShape( Shape::Rectangle ) );
shape->draw();

输出:

Rectangle

.

注:本人未看过C++版的设计模式,主要是别人不肯发给我,我又没找到资源

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号