[GeekBand][C++设计模式]第二周作业

P.S. 这周居然日平均上班时间达到了19h。。。已跪,救命

用的工厂方法

class DrawSys
{
private:
    Shape shape;
public:
    void draw() {/*...*/ }
};

class Shape
{
private:
    ShapeFactory* shape;
public:
    Shape(ShapeFactory* shapefac)
        :shape(shapefac)
    {}
    ~Shape()
    {
        delete shape;
    }
    void Draw()
    {
        IShape* ishape = shape->CreateShape();
        ishape->Drawing();
        delete ishape;
    }
};

class IShape
{
public:
    virtual void Drawing() = 0;
    virtual ~IShape() {}
};

class Line :public IShape
{
public:
    virtual void Drawing() {/*...*/ }
};

class Rec :public IShape
{
public:
    virtual void Drawing() {/*...*/ }
};

class Circle :public IShape
{
public:
    virtual void Drawing() {/*...*/}
};

class ShapeFactory
{
public:
    virtual IShape* CreateShape() = 0;
    virtual ~ShapeFactory() {}
};

class LineFactory : public ShapeFactory
{
public:
    IShape* CreateShape()
    {
        return new Line();
    }
};

class RecFactory : public ShapeFactory
{
public:
    IShape* CreateShape()
    {
        return new Rec();
    }
};

class CircleFactory : public ShapeFactory
{
public:
    IShape* CreateShape()
    {
        return new Circle();
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • P.S. 这周居然日平均上班时间达到了19h。。。已跪,救命P.S. 话说,这门课要好好写个笔记真难。特别想知道那...
    散夜霜阅读 251评论 0 0
  • 这个暑期社会实践让我深深感受到大自然的鬼斧神工,多次下乡做问卷调查,让我感受到来自乡民们的热情接待和友好地交...
    简单恋阅读 235评论 0 2
  • 全新的tvOS中引进了一个很重要的东东,叫 top sheft ,top shelf 是什么呢?先上图 有图好说话...
    芮星晨阅读 1,244评论 1 5
  • “九死南荒无不恨,兹游奇绝冠平生。” 被中原抛弃的苏东坡流放当年的荒芜之地,如今却成就了中国最美的南端一角。 三亚...
    小耳朵鱼阅读 761评论 0 9
  • 以前觉得等待是最简单且成本最小的事情,不用费什么劲儿,只要有耐心,就会在某个时刻等到你梦寐以求的东西。后来,听得多...
    云曦之下阅读 541评论 0 1