源**
1 #include 2 #include 34class
student512
13int
getid()
1417
void setid(int
id)18
2122
qstring getname()
2326
void
setname(qstring name)
2730
31int
getstatus()
3235
void setstatus(int
status)
3639
40qstring tostring()
4145
46public:47
static
const
intinvalid;
48static
const
intvalid;
4950
private:51
intm_nid;
52qstring m_name;
53int
m_status;
54};
5556
const
int student::invalid = 0;57
const
int student::valid = 1;58
59void
main()
6064
65//
run out:
66/*
67* "student [id = 1, name = 張三, status = 1]"
68*/
以類取代型別碼
1 #include 2 #include 3總結4class
statuscode510
11int
getcode()
1215
16void setcode(int
code)
1720
21qstring tostring()
2225
26private:27
intm_ncode;
28};
2930
class
student
3138
39int
getid()
4043
void setid(int
id)44
4748
qstring getname()
4952
void
setname(qstring name)
5356
57statuscode getstatus()
5861
void
setstatus(statuscode status)
6265
66qstring tostring()
6771
72private:73
intm_nid;
74qstring m_name;
75statuscode m_status;
76};
7778
void
main()
7983
84//
run out:
85/*
86* "student [id = 1, name = 張三, status = statuscode [code = 1]]"
87*/
類中有乙個數值型別碼,但它並不影響類的行為。以乙個新的類替換該數值型別碼。
在使用replace type code with class (以類取代型別碼)之前,你應該先考慮型別碼的其他替換方式。
只有當型別碼是純粹資料時(也就是型別碼不會在switch語句中引起行為變化時),你才能以類來取代它。
更重要的是:任何switch語句都應該運用replace conditional with polymorphism (以多型取代條件表示式)去掉。
為了進行那樣的重構,你首先必須運用 replace type code with subclass (以子類取代型別碼)或replace type code with state/strategy (以狀態策略取代型別碼),把型別碼處理掉。
good good study, day day up.
順序 選擇 迴圈 總結
5 15 以測試取代異常
原 1 double getvalueforperiod int periodnumber 27 catch arrayindexoutofbound ception e 811 以測試取代異常 1 ouble getvalueforperiod int periodnumber 27 8retur...
6 11 以委託取代繼承
原 1 class sanitation 28 910class child public sanitation 11 以委託取代繼承 class child string washhands private sanitation m psanitation 具有委託物件 sanitation 的例...
6 11 以委託取代繼承
原 1 class sanitation 28 910class child public sanitation 11 以委託取代繼承 class child string washhands private sanitation m psanitation 具有委託物件 sanitation 的例...