影片出租店是《重構:改善既有**的設計》裡面的第乙個例子。使用了多種重構方法。
影片出租店:計算每一位顧客的消費金額並列印詳單。
操作者告訴程式:顧客租了哪些影片,租期多長,程式便根據租賃時間和影片型別算出費用。影片分為三類:普通片,兒童片和新片。除了計算費用,還要為常客計算積分,積分會根據租片種類是否為新片而有不同。
重構之前的**:
refector_1.h
#ifndef refector_1_h
#define refector_1_h
#include #include class movie
;class rental
;class customer
;#endif // refector_1_h
refector_1.cpp
#include "refector_1.h"
#include movie::movie(qstring title, int pricecode)
int movie::getpricecode()
void movie::setpricecode(int pricecode)
qstring movie::gettitle()
rental::rental(movie *movie, int daysrented)
int rental::getdaysrented()
movie *rental::getmovie()
customer::customer(qstring name)
void customer::addrental(rental *rental)
qstring customer::getname()
qvectorcustomer::getrentals()
qstring customer::statement()
break;
case movie::new_release:
thisamount += rental->getdaysrented() * 3;
break;
case movie::children:
thisamount += 1.5;
if (rental->getdaysrented() > 3)
break;
}frequentrenterpoints++;
if (movie::new_release == (rental->getmovie()->getpricecode()) &&
rental->getdaysrented() > 1 )
result += "\t" + rental->getmovie()->gettitle() + "\t" + qstring("%1").arg(thisamount) + "\n";
totalamout += thisamount;
}result += "amount owed is " + qstring("%1").arg(totalamout) + "\n";
result += "you earned " + qstring("%1").arg(frequentrenterpoints) + " frequent renter points";
qdebug() << qprintable(result) ;
return result;
}
main.cpp
movie movie1("movie1", 0);
movie movie2("movie2", 1);
movie movie3("movie3", 2);
movie movie4("movie4", 0);
movie movie5("movie5", 1);
movie movie6("movie6", 2);
movie movie7("movie7", 0);
rental rental1(&movie1, 1);
rental rental2(&movie2, 2);
rental rental3(&movie3, 3);
rental rental4(&movie4, 4);
rental rental5(&movie5, 5);
rental rental6(&movie6, 6);
rental rental7(&movie7, 7);
customer ctmer("tester");
ctmer.addrental(&rental1);
ctmer.addrental(&rental2);
ctmer.addrental(&rental3);
ctmer.addrental(&rental4);
ctmer.addrental(&rental5);
ctmer.addrental(&rental6);
ctmer.addrental(&rental7);
ctmer.statement();
執行結果:
影片出租店 重構方法(2)
影片出租店是 重構 改善既有 的設計 裡面的第乙個例子。使用了多種重構方法。影片出租店 計算每一位顧客的消費金額並列印詳單。操作者告訴程式 顧客租了哪些影片,租期多長,程式便根據租賃時間和影片型別算出費用。影片分為三類 普通片,兒童片和新片。除了計算費用,還要為常客計算積分,積分會根據租片種類是否為...
影片出租店 重構方法(3)
影片出租店是 重構 改善既有 的設計 裡面的第乙個例子。使用了多種重構方法。影片出租店 計算每一位顧客的消費金額並列印詳單。操作者告訴程式 顧客租了哪些影片,租期多長,程式便根據租賃時間和影片型別算出費用。影片分為三類 普通片,兒童片和新片。除了計算費用,還要為常客計算積分,積分會根據租片種類是否為...
影片出租店 重構方法(6)
影片出租店是 重構 改善既有 的設計 裡面的第乙個例子。使用了多種重構方法。影片出租店 計算每一位顧客的消費金額並列印詳單。操作者告訴程式 顧客租了哪些影片,租期多長,程式便根據租賃時間和影片型別算出費用。影片分為三類 普通片,兒童片和新片。除了計算費用,還要為常客計算積分,積分會根據租片種類是否為...