???????????
???????????? ???????[ 2014/5/12 10:52:08 ] ??????????????? ??????? ???????
?????????????????????????????????????????????????????????????????????????????????????????????????梅?????????????????????????????????????????????????????????????????????????????位????????????????????????
?????????(Extract Method)
??????????????????????????小?????step1??step2??step3???????????瓒�???????????????????些???????????????????????????????????????????????????????????????????????????????????????????????????未??????????????????????????????????梅??????????????????????未?????????????????????????????????????纬???梅?????
???????????????????????????????????????????????????????????????????????????眉?????????????????胁??????????????????????????????????????????????????????
??????????????????????????校????泻???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????梅?????????????????????????????????????????????????????????????????????纬?????????????????
???????????????????????????????????????????????????????????????????????????????小?
class Account...
private AccountType_type;
private int_daysOverdrawn;
double overdraftCharge(){
if (_type.isPremium()){
double result = 10;
if (_daysOverdrawn > 7) result += (_daysOverdrawn -7)* 0.85;
return result;
}
else return _daysOverdrawn * 1.75;
}
double bankCharge(){
double result = 4.5;
if (_daysOverdrawn > 0) result +=overdraftCharge();
return result;
}
|
??????????
classAccount...
private AccountType _type;
private int _daysOverdrawn;
double overdraftCharge(){
return _type.overdraftCharge(_daysOverdrawn);
}
double bankCharge(){
double result = 4.5;
if (_daysOverdrawn > 0)
result += _type.overdraftCharge(_daysOverdrawn);
return result;
}
classAccountType...
double overdraftCharge(Account account){
if (isPremium()){
double result = 10;
if (account.getDaysOverdrawn()> 7)
result += (account.getDaysOverdrawn()- 7)* 0.85;
return result;
}
else return account.getDaysOverdrawn()* 1.75;
}
|
?????????(Extract Class)
??????????????????????????????????????????????????????????位???澹�——?????????????????????????????????????????????????????????????????????小????????????????????????????????????????????????????????????????锟�?
????1.?????????(SRP)-???????????y?????????????浠�?????
???????????????????????????????????围????????椤VC????????????????????????????????????????????????????????????V????????????????????????
????????????????????????????纬?????DTO????????????????????????????????????????????纬?????Facade???????????????????纬伞???????????????????????????
???????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????梅?????????????????????????????????????????????????????????????????????纬?????????????????
???????????违???????????????????????????Override???械????????????些???????????????????????????????????????????????????胁???
????2.????——??????(OCP)-?????????????????
???????????浠�???????????渭??????????????????????械????????????????????????????????????????????????浠�???渭???????浠�?????????
????3.Liskov?婊�???(LSP)
?????????????????婊�??????????????????????????婊�??????????????????????????????????????????慰??????尾???????蔚??????瑁�?????????????浠�?????????蔚??????瑁�?????????????????????尾????????渭?小?
????4.???????????(DIP)-?????榀�?????????????椋�?????????????????
????????????????????????????????????????????????????????????????????????????????????????????浠�???????????浠�?????????????????????浠�??
?????????????????????????????LSP???????????????????????????????????????卸?????????????????????????????????????????????
??????

???路???
??????????????????
2023/3/23 14:23:39???写?貌??????????
2023/3/22 16:17:39????????????????????些??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???路???????路
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11