设计模式(3)-策略模式(Strategy) (五)

2014-11-24 11:48:37 · 作者: · 浏览: 10
rice::DiscountPrice()
{
qDebug()<<"construct DiscountPrice";
}

double DiscountPrice::getCharge(int daysRented)
{
qDebug()<<"DiscountPrice::getCharge";
double result = 2;
if(daysRented>2)
{
result += daysRented;
}

return result;
}
#include
#include "discountprice.h"

DiscountPrice::DiscountPrice()
{
qDebug()<<"construct DiscountPrice";
}

double DiscountPrice::getCharge(int daysRented)
{
qDebug()<<"DiscountPrice::getCharge";
double result = 2;
if(daysRented>2)
{
result += daysRented;
}

return result;
}

movie.h

[html]
#ifndef MOVIE_H
#define MOVIE_H

#include
#include "price.h"
enum {REGULAR = 0,NEW_RELEASE = 1,DISCOUNT = 2};

class Movie
{
public:
Movie();
Movie(QString title, int priceCode);
~Movie();

private:
QString _title;
int _priceCode;
Price *_price;

public:
QString getTitle();
int getPriceCode();
void setPriceCode(int arg, Price *_price);
double getCharge(int daysRented);
};

#endif // MOVIE_H
#ifndef MOVIE_H
#define MOVIE_H

#include
#include "price.h"
enum {REGULAR = 0,NEW_RELEASE = 1,DISCOUNT = 2};

class Movie
{
public:
Movie();
Movie(QString title, int priceCode);
~Movie();

private:
QString _title;
int _priceCode;
Price *_price;

public:
QString getTitle();
int getPriceCode();
void setPriceCode(int arg, Price *_price);
double getCharge(int daysRented);
};

#endif // MOVIE_H

movie.cpp

[html]
#include
#include "movie.h"
#include "regularprice.h"
#include "newreleaseprice.h"
#include "discountprice.h"

Movie::Movie()
{
qDebug()<<"construct Movie::Movie()";

}

Movie::Movie(QString title, int priceCode)
{
qDebug()< _price = new Price;
_title = title;
_priceCode = priceCode;
}

Movie::~Movie()
{
delete _price;
}

QString Movie::getTitle()
{
return _title;
}

int Movie::getPriceCode()
{
return _price->getPriceCode();
}

void Movie::setPriceCode(int arg, Price *price)
{
_price = price;
_price->setPriceCode(arg);
}

double Movie::getCharge(int daysRented)
{
return _price->getCharge(daysRented);
}
#include
#include "movie.h"
#include "regularprice.h"
#include "newreleaseprice.h"
#include "discountprice.h"

Movie::Movie()
{
qDebug()<<"construct Movie::Movie()";

}

Movie::Movie(QString title, int priceCode)
{
qDebug()< _price = new Price;
_title = title;
_priceCode = priceCode;
}

Movie::~Movie()
{
delete _price;
}

QString Movie::getTitle()
{
return _title;
}

int Movie::getPriceCode()
{
return _price->getPriceCode();
}

void Movie::setPriceCode(int arg, Price *price)
{
_price = price;
_price->setPriceCode(arg);
}

double Movie::getCharge(int daysRented)
{
return _price->getCharge(daysRented);
}

rental.h

[html]
#ifndef RENTAL_H
#define RENTAL_H

#include "movie.h"

class Rental
{
public:
Rental(Movie movie, int daysRented);

private:
Movie _movie;
int _daysRented;

public:
Movie getMovie();
int getDaysRented();
double getCharge(int daysRented);
};

#endif // RENTAL_H
#ifndef RENTAL_H
#define RENTAL_H

#include "movie.h"

class Rental
{
public:
Rental(Movie movie, int daysRented);

private:
Movie _movie;
int _daysRented;

public:
Movie getMovie();
int getDaysRented();
double getCharge(int daysRented);
};

#endif // RENTAL_H

rental.cpp

[html]
#include
#include "rental.h"

Rental::Rental(Movie movie, int daysRented)
{
qDebug()<<"construct Rental";
_movie = movie;