首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这段代码是工厂方法还是抽象工厂模式?

这段代码是工厂方法还是抽象工厂模式?
EN

Stack Overflow用户
提问于 2020-07-02 13:24:47
回答 1查看 377关注 0票数 0

来自https://stackoverflow.com/questions/5739611/what-are-the-differences-between-abstract-factory-and-factory-design-patterns/47453161#47453161

工厂 想象一下,你正在建造一座房子,你走近一位木匠要一扇门。你要为那门和你的需要量出尺度,他就为你建造一扇门。在这种情况下,木匠是一个门工厂。您的规格是工厂的输入,门是工厂的输出或产品。 抽象工厂 现在,考虑同样的门的例子。你可以去木匠,也可以去塑料门店或PVC店。所有这些都是门工厂。根据情况,你决定你需要接触什么样的工厂。这就像一个抽象工厂。

根据这种解释,下面的代码是工厂方法还是抽象工厂模式?

代码语言:javascript
复制
class PaintShape
{
public:
    static PaintShape *createShapeObject( std::string shape );

    virtual void print() { std::cout << "print PaintShape"; }
};

class PaintTriangle : public PaintShape
{
public:
    PaintTriangle() {}
    virtual void print() { std::cout << "\nprint PaintTriangle"; }
};

class PaintRectangle : public PaintShape
{
public:
    PaintRectangle() {}
    virtual void print() { std::cout << "\nprint PaintRectangle"; }
};

PaintShape* PaintShape::createShapeObject( std::string shape )
{
    if( shape == "triangle" )
        return new PaintTriangle;
    else if( shape == "rectangle" )
        return new PaintRectangle;

    return new PaintShape;
};

class EndDeveloper
{
public:
    EndDeveloper()
    {
        std::string shape;
        std::cout << "\nWhat shape would you like? ";
        // Get input from the terminal.
        std::getline( std::cin, shape );

        PaintShape *p = PaintShape::createShapeObject( shape );
        p->print();

        std::cout << "\nWhat shape would you like? ";
        std::getline (std::cin, shape);

        PaintShape *s = PaintShape::createShapeObject( shape );
        s->print();
    }
};

将如何将其转换为工厂方法和/或抽象工厂方法?

EN

回答 1

Stack Overflow用户

发布于 2020-07-02 15:02:08

工厂方法只生成一个项,而抽象工厂则生成某种相关项的子集。

在您的例子中,您有一个模式工厂方法。

关于如何记住解释过的东西的建议并不适用于每个人。对我来说,从引文中看不出有什么区别:)我建议你阅读以下书籍,把它们放在它们的位置上:

  1. ,“四人帮”。这是个经典。
  2. 头部第一设计模式:大脑友好型指南。这个更容易理解。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62697398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档