2021 시작

//fly.h

#ifndef ORDER_H
#define ORDER_H
#include <QLabel>
class FlyBehavior
{
public:
    FlyBehavior(){}
    ~FlyBehavior(){}

    virtual QSharedPointer<QLabel> fly() = 0;
};

class RocketFly : public FlyBehavior
{
private:
    QSharedPointer<QLabel>lb;
public:
    RocketFly(){}
    ~RocketFly(){}

    virtual QSharedPointer<QLabel> fly()
    {
        lb.reset(new QLabel("로켓엔진으로 난다!"));

        return lb;
    }
};

class WingFly : public FlyBehavior
{
private:
    QSharedPointer<QLabel>lb;
public:
    WingFly(){}
    ~WingFly(){}

    virtual QSharedPointer<QLabel>fly()
    {
        lb.reset(new QLabel("날개로 난다!"));

        return lb;
    }

};

class CantFly : public FlyBehavior
{
private:
    QSharedPointer<QLabel>lb;

public:
    CantFly(){}
    ~CantFly(){}

    virtual QSharedPointer<QLabel>fly()
    {
        lb.reset(new QLabel("못날아 ㅠㅠ"));

        return lb;
    }
};




#endif // ORDER_H
//quack.h

#ifndef QUACK_H
#define QUACK_H

#include <QLabel>
class QuackBehavior
{
private:

public:
    QuackBehavior(){}
    ~QuackBehavior(){}

    virtual QSharedPointer<QLabel> quack() = 0;
};

class Quack : public QuackBehavior
{
private:

    QSharedPointer<QLabel>lb;

public:
    Quack(){}
    ~Quack(){}

    virtual QSharedPointer<QLabel> quack()
    {
        lb.reset(new QLabel("꽉!!"));

        return lb;
    }

};

class Puack : public QuackBehavior
{
private:
    QSharedPointer<QLabel>lb;

public:
    Puack(){};
    ~Puack(){}

    virtual QSharedPointer<QLabel>quack()
    {
        lb.reset(new QLabel("퐉!!! 퐉!!!"));

        return lb;
    }
};

class CantQuack : public QuackBehavior
{
private:
    QSharedPointer<QLabel>lb;
public:
    CantQuack(){}
    ~CantQuack(){}

    virtual QSharedPointer<QLabel>quack()
    {
        lb.reset(new QLabel("못울어 ㅠㅠ!"));

        return lb;
    }
};

#endif // QUACK_H
//duck.h

#ifndef DUCK_H
#define DUCK_H
#include "fly.h"
#include "quack.h"

class Duck
{
private:
    QSharedPointer<QuackBehavior>quack;

    QSharedPointer<FlyBehavior>fly;

public:
    virtual QSharedPointer<QPixmap> Display() =0;

    QSharedPointer<QLabel> Swim()
    {
         return QSharedPointer<QLabel>(new QLabel("헤엄침"));
    }


    QSharedPointer<QLabel> performQuack()
    {
        return quack->quack();
    }

    QSharedPointer<QLabel> perfromFly()
    {
        return fly->fly();
    }


    void setFlyBehavior(QSharedPointer<FlyBehavior>fly)
    {this->fly = fly;}
    void setQuackBehavior(QSharedPointer<QuackBehavior>quack)
    {this->quack = quack;}
};

class YellowDuck : public Duck
{
private:

public:

     virtual QSharedPointer<QPixmap> Display()
    {
        return QSharedPointer<QPixmap>(new QPixmap("c:\\qt_image\\Yellow_Duck.jpg"));
    }


};

class BlueDuck : public Duck
{
private:

public:
    virtual QSharedPointer<QPixmap> Display()
   {
       return QSharedPointer<QPixmap>(new QPixmap("c:\\qt_image\\Blue_Duck.jpg"));
   }

};

class WoodDuck : public Duck
{
private:

public:
    virtual QSharedPointer<QPixmap> Display()
   {
       return QSharedPointer<QPixmap>(new QPixmap("c:\\qt_image\\Wood_Duck.jpg"));
   }

};

class ModelDuck : public Duck
{
private:

public:
    virtual QSharedPointer<QPixmap> Display()
   {
       return QSharedPointer<QPixmap>(new QPixmap("c:\\qt_image\\Model_Duck.jpg"));
   }

};

#endif // DUCK_H

strategy.zip
0.01MB

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading