แแ แแแแแ แแแกแฃแฎแแกแแแแแแแแแก แแ แแแชแแแ, แ แแแแแแช แแกแแแ แชแแแแแแแ แ แแแแ แช แแ แแแแแ แแแกแฃแฎแแกแแแแแแแแแก แแ แแแชแแแ,
แแแ แแ แแแแแ แชแแแแแแแแแแแก แแ แแแชแแแ - แฃแแแแฃแ แแกแแ แแแแแแฃแ แแแญแก แแแกแแแแแแ แแ แแกแแแ แแแ แแแฃแแ แแแแฎแแ แแ แแแ แแแแกแขแแก แแแขแแ แแแฃแแ.
แฉแแแ แแแ แแแแ แกแแ แแแแฃแแ แแแชแแแแ แแ แแ แแแชแแแแแ แแแฎแแ แแแ แแแแ แแฃแ แกแแก แแแกแแฌแงแแกแจแ, แ แแชแ แแฎแแแแแแ แแแแ แแ แแฌแแแแแแแ แขแงแแจแ แฌแแแงแแแแแก, แ แแแ แแแ แแแแแกแแแ แกแขแฃแแแแขแแแ - แแแแแแแแ แกแขแฃแแแแขแแแ แแแแแแแแแแแแ.
แขแงแแจแ แแแแงแแแแ 8-9 แแแชแแแ แฏแแฃแคแแแแ แแ แฉแแแแขแแ แแ แจแแฏแแแ แ - แ แแแแแ แฏแแฃแคแ แแแแแแแ แแ แ แแแแ แแ แแงแก แงแแแแแแ แกแฌแ แแคแแ, แแ แแแ แแแแ, แ แแ แฏแแฃแคแแแแ แแแ แแแแแ แแ แแงแ แฉแแแกแฎแ แญแแฅแแจแ, แแแแ แแ แแแแแแก. แฎแแแ แแแกแแแแก แแฅแแก แกแแญแแแแ. แแแแงแแคแแแแแ, แ แแแแแแแช แแแแกแ แฃแแ แแฃแจแแแแ, แแแแแแแก แฏแแฃแคแแก แ แแแแก แแแแแก.
แจแแแแฎแแแแ, แ แแแแกแแช แ แแแแก แแแแ แแงแ แกแแแแก แฏแแ แแแ, แแงแ SRP-แแก แแแ แแ แแแแฎแแ แชแแแแแแ.
แแแแแแ แขแแแ 1. แแ แแแแแ แแแกแฃแฎแแกแแแแแแแแ.
แแ แแแแแ แแแกแฃแฎแแกแแแแแแแแแก แแ แแแชแแแแก (SRP) แแคแแชแแแแฃแ แแแแแแ แขแแแแจแ แแแแฅแแแแแ, แ แแ แแแแแแฃแ แกแฃแแแแฅแขแก แแฅแแก แกแแแฃแแแ แ แแแกแฃแฎแแกแแแแแแแแ แแ แแ แกแแแแแแก แแแแแแ แแ แแแก แแฅแแก แแฎแแแแ แแ แแ แแแกแฃแฎแแกแแแแแแแแ.
แแแแแแฎแแแแ แแแแแฅแขแ "แกแแกแแแแ" (แขแแแแแ แ).
SRP แแ แแแชแแแแก แแแแกแแฎแแ แชแแแแแแแแ, แฉแแแ แแแแงแแคแ แแแกแฃแฎแแกแแแแแแแแแแก แกแแแแ:
- แแ แแ แแกแฎแแแก (PourOperation)
- แแ แแ แกแแแแก (DrinkUpOperation)
- แแ แแก แแฅแแก แกแแญแแแแ (TakeBiteOperation)
แแ แแชแแกแแก แแแแแแฃแแ แแแแแฌแแแ แแแกแฃแฎแแกแแแแแแแแ แแ แแชแแกแแก แแ แ แแแแแแแแแขแแ, แแแฃ แแฅแแก แแ แแ แแขแแแฃแ แ แแแกแฃแฎแแกแแแแแแแแ - แแแแแแ, แแแแกแฎแแ แแ แฌแแกแแฎแแแกแแแแแ.
แกแแกแแแแ แฎแแ แแแ, แแแแแก แแฎแ แแ, แแ แแก แคแแกแแแ แแ แแแแ แแชแแแแแกแแแแก:
ัlass Tippler {
//...
void Act(){
_pourOperation.Do() // ะฝะฐะปะธัั
_drinkUpOperation.Do() // ะฒัะฟะธัั
_takeBiteOperation.Do() // ะทะฐะบััะธัั
}
}
แ แแขแแ?
แแแแแแแแ แแ แแแ แแแแกแขแ แแแแแฃแแแกแแแแก แแแแก แฌแแ แก, แแแแแฃแแ แแ แฃแงแฃแ แแแฆแแแ, แกแฃแแแแ แแ แงแแแแแแแแก แฉแฅแแ แแแก. แแแก แจแแฃแซแแแ แแ แแแ แแฃแแแ แแแแญแแ แแก แแ แแแแแแก แแแแฎแแแแแแ 3-7 แขแแ แแแแ.
แแแแ แแแแก แจแแแแฎแแแแแจแ แแก แกแแแ แขแแ แแแแแ. แแฃแแชแ, แแฃ แแแแก แแ แแ แคแฃแ แชแแแ แแแแฌแแ แ, แแแจแแ แแแกแจแ แแฅแแแแ แฎแแแแแ, แกแแแแแแแแแ, แฉแฎแฃแแ แแ แแแฃแแแแแแแแ แแแแแแ แแแแแขแแแแแ. แแ แแก แงแแแแแคแแ แ แแฅแแแแ แแ แแ แแแแแแแก แกแฎแแฃแแจแ. แแแ แฌแแฃแแแแฃแแ แแแ , แแฅแแแ แแแแแฎแแแ แแกแแแ แแแแ แแฅแแแแก แแ แแฅแขแแแแจแ. แแ แแ แแก แงแแแแแแ แฐแฃแแแแฃแ แ แขแแกแขแ แคแกแแฅแแแแกแแแแก.
แแแแ แแก แแฎแ แแ, แแแแแฃแแ แแแแแแแแ แจแแฅแแแแแแ แแแแกแแแแก, แ แแ แแแแฎแแแแแก แแแแแก แแแแจแ แ แแแแฃแ แ แกแแแงแแ แแก แแแแแฅแขแแแแก แกแแแฃแแแชแแ. แแแก แฌแแ แแแกแแฎแแแจแ แแแก แจแแฃแซแแแ แจแแแแ แแแก แแกแแแ, แแแแฌแงแแก แแแแแแ แแฎแแแ แกแแแแแแ แแ แแแจแแแแก แแกแแแ แแแแแ แแแแ. แฌแแ แแแแแแแแแ แซแแแแ แแแแแแแก แแแแฅแแแ. แแฅแแแแก แฌแแ แแแกแแฎแแแจแ แจแแแแซแแแแ แแแแฆแแ แแแ แ, แแแแฆแแ แแแ แแก แแแ แแแ แแ แแฅ แแแฎแแ แคแแแฏแ แแก แแแฌแ แแแฅแแแแแแแแ, แ แแแแแแ แจแแแแแ แแฅแแแแ แแแแแชแแแแแ แแแแแคแ. แแแแ แแ แแฅแแแ แแแ แฎแแแแแ แแแแ แแขแแก แงแแแแ แแแแแแแแแขแก แแ แแแ แแฃแแแ, แแ แ โแฉแแแแแแแแแแจแโ. แแแแแช "แแแแแฃแ แแแชแก" แแ แจแแฃแซแแแ.
แแแจแแกแแแแแ, แแแแแแแแแแ แแ แแแ แแแแกแขแแแ แแแแฌแแแแแแ แ แแฃแ แแแฅแแแแแแแแก แแแแแแแแ แ แแฃแ แแ แกแแแฃแจแแ แแแแแแแขแแแแ. แแฃแแชแ, แแแกแ แแแจแแ แจแแกแแซแแแแแแแ แกแฎแแแแแกแฎแแ แแแแ: แแแแ แซแแแ แแแแฅแแแแจแ แฐแแแ แแก แกแแแแแแ แ แแแ แแแจแ แแแแแก, แฎแแแ แแแแแแแแ แแแ แแแแฅแแแแแจแ แกแแแแขแแก แแแแฅแขแ แแแแแแก แแแฃแแแ แแแแแ แฎแแแก แฃแจแแแก แซแ แแแแก แฉแแ แแแแก, แ แแช แจแแแซแแแแ แแ แแแแแแ แแงแแก แ แแแแแขแแก แแ แแก.
แแฎแแ, SRP แแ แแก แแ แแแชแแแ, แ แแแแแแช แแแแแแ แขแแแก, แแฃ แ แแแแ แฃแแแ แแแแจแแแ, แแแฃ แกแแ แฃแแแ แแแแฎแแขแแ แแแแงแแคแ แฎแแแ.
แแก แแแแแแก, แ แแ แแฃแชแแแแแแแแ แแแจแแ โแแแกแฃแฎแแกแแแแแแแแแกโ แแแงแแคแแก แแ แแแชแแแแก แแแฎแแแแแ, แแแฃ แแแ แแแแฃแแ แแแแแฅแขแแแแก แแแแชแแแแแแก แแแฎแแแแแ.
แแแแฃแแ แฃแแแแ แกแแกแแแแก แแ แแ แฃแแแ แแขแแกแแแแแก, แ แแแแแแกแแช แแแแแฃแแ แแแชแ แแฆแแแก แแแจแแแก แแ แแก:
- แแแแ แซแแแแแ แแแแแแ แแแฎแแ แงแแแแ แแแแแแ
- แแแแ แจแแแซแแแแ แแแฌแแ แแก แ แแแแแแแแ แแ แแแ แแแแกแขแแ แแ แแแ แแฃแแแ (แแแแแแฃแแ แฌแแ แก แชแแแแแฃแ แแแแแแแขแก)
- แแแขแแแแขแฃแ แ แขแแกแขแแ แแแ แแแแแ แขแแแแแฃแแแ - แ แแช แฃแคแ แ แแแ แขแแแแ แแแแแแแขแ, แแแ แฃแคแ แ แแแแแแแ แแแกแ แขแแกแขแแ แแแ
- แฉแแแแแ แแแแแก แจแแแแแแแแแแแ - แจแแแแซแแแแ แจแแชแแแแแ DrinkUpOperation แแแแ แแชแแแก, แ แแแแแก แแ แแกแแช แแแแ แแแ แแกแฎแแแก แกแแแฎแแก แแแแแแแก แฅแแแจ. แแ แจแแชแแแแแ แฉแแแแกแฎแแแก แแแแ แแชแแ แแแแ แแชแแแ, แ แแแแแจแแช แจแแฃแ แแแ แฆแแแแ แแ แฌแงแแแ แแ แแ แแงแ แแ แแฃแแ. แแแแแแกแแก แแแแฎแแแแแแแแแ แแแแแแแแแแ แ, แจแแแแซแแแแ แแแแแแแแ แงแแแแแคแแ แ แแแแแแแก แแแแแก แจแแฎแแแแก แแแ แแจแ Tippler.แแแแฅแแแแ.
- แแ แแแแ แแชแแแแแแแ แจแแแแซแแแแ แแแแแชแแ แฌแแแแแแแ (แแฎแแแแ แแแแแงแแแแแแ TakeBitOperation), แแแแแฐแแแฃแ แ (แแฎแแแแ แแแแแงแแแแแ). DrinkUpOperation แแแ แแแแแ แแแแแแแแ) แแ แแแแแงแแคแแแแแก แแแแ แกแฎแแ แแแแแแก แแแแฎแแแแแก.
(แแฐ, แ แแแแ แช แฉแแแก, แแก แฃแแแ OCP แแ แแแชแแแแ แแ แแ แแแแแ แฆแแแ แแ แแแกแขแแก แแแกแฃแฎแแกแแแแแแแแ)
แแ, แ แ แแฅแแ แฃแแแ, แฃแแ แงแแคแแแ แแฎแแ แแแแ:
- แแแขแ แขแแแแแแก แจแแฅแแแ แแแแแแฌแแแก.
- แแแแ แแแ แแแ แแแแแ แกแแแแก แ แแแแแแแแ แกแแแแแก แจแแแแแ, แแแแ แ แกแฎแแ แจแแแแฎแแแแแจแ แแฅแแแแแแ.
แแแแแแ แขแแแ 2. แแ แแแแแ แชแแแแแแแแแแ.
แแแแ แแแแแชแแ, แแแขแแแแแ! แกแแกแแแแแก แแแแกแกแแช แแฅแแก แแ แแ แแแกแฃแฎแแกแแแแแแแแ - แแก แกแแแแก! แแ แกแแแ แแแ, แกแแขแงแแ โแแแกแฃแฎแแกแแแแแแแแโ แฃแแแแฃแ แแกแแ แแฃแแแแแแแ แชแแแแแ. แแแฆแแช แแแกแฃแฎแแกแแแแแแแแ แแแชแแแ แแแแแก แแแแแ, แแแฆแแช แแ แแแกแฃแฎแแกแแแแแแแแ แแแซแแ แแแแแขแ แแแแแแฃแแ แแแแแแแแแแแก แแฆแแ แแแแ.
แแแแแแฎแแแแ แกแแกแแแแแก แแ แ แแแแฎแแ แชแแแแแแ. แแแ แแแแ, แแแแแ แแแฎแกแแแแแ, แจแแแชแแแก แกแแ แแแแกแก - แแแแกแฎแแ, แแแแแแ แแ แแแแ แแแแ.
แแแแ แ แแฌแแ แแแ โแฌแแ แแ แแฎแแแแ แฌแแโ แแแแแแแแแแแแ แแ แจแแแชแแแก แแแแแแจแ แแ แกแแแฃแ แแแแ แแแแแแแก แแฅแขแ:
//ะะต ััะฐัััะต ะฒัะตะผั ะฝะฐ ะธะทััะตะฝะธะต ััะพะณะพ ะบะปะฐััะฐ. ะัััะต ััะตัััะต ะฟะตัะตะฝัะบั
ัlass BrutTippler {
//...
void Act(){
// ะฝะฐะปะธะฒะฐะตะผ
if(!_hand.TryDischarge(from:_bottle, to:_glass, size:_glass.Capacity))
throw new OverdrunkException();
// ะฒัะฟะธะฒะฐะตะผ
if(!_hand.TryDrink(from: _glass, size: _glass.Capacity))
throw new OverdrunkException();
//ะะฐะบัััะฒะฐะตะผ
for(int i = 0; i< 3; i++){
var food = _foodStore.TakeOrDefault();
if(food==null)
throw new FoodIsOverException();
_hand.TryEat(food);
}
}
}
แแ แแแ แแก แแแแกแ, แแแ แ แแแแแแแ แแแแแแก แแแแแกแแแ แแกแแ, แแฃแกแขแแ แแ แแแแแ แแ แแแแแแงแฃแ แแแ แแ แแแแแ แแแก แแแแแ แแแกแฃแฎแแกแแแแแแแแแก โแแแแแแแกโ แจแแกแแฎแแ.
แแแแแแฃแแแแ!
แจแแแแแ แฉแแแ แจแแแแแแแ แ แแแแแแแจแ แแ แแแแแแ SRP-แแก แกแฎแแ แแแแแแ แขแแแแก - แแ แแแแแ แชแแแแแแแแแแแก แแ แแแชแแแก.
SCP แแชแฎแแแแแก, แ แแ "แแแแฃแแก แแฅแแก แแ แแ แแ แแ แแแแแ แแ แแแแแแ, แ แแ แจแแแชแแแแแก". แแแฃ โแแแกแฃแฎแแกแแแแแแแแ แแ แแก แชแแแแแแแแก แแแแแแโ.
(แ แแแแ แช แฉแแแก, แแแญแแแ, แ แแแแแแแแช แแแแฆแแก แแ แแแแแแแฃแ แ แแแแแแ แขแแแ, แแแ แฌแแฃแแแแฃแแแ แแงแแแแ แแแแแฃแแแก แแแชแแก แขแแแแแแแแฃแ แจแแกแแซแแแแแแแแแจแ)
แแฎแแ แงแแแแแคแแ แ แแแแแก แแแแแแแ แแแแแ. แชแแ-แชแแแแ แจแแแแแซแแแ แจแแแชแแแแแ แฉแแแแกแฎแแแก, แแแแแแแก แแ แญแแแแก แแ แแชแแแฃแ แแแ, แแแแ แแ แแแแแ แกแแกแแแแจแ แจแแแแแซแแแ แจแแแชแแแแแ แแฎแแแแ แแแฅแแแแแแแแแก แแแแแแแแแแ แแแ แแ แจแแแแแแแแแแแ, แแแแแแแแแ, แกแแญแแแแก แแแแแแแก แฌแแ แแแแแแแแแแแแแ แแ แกแแแฆแแแ แซแแแแก แฌแแแแแฎแแแก แแแแแขแแแแ.
โแฌแแ แแ แแฎแแแแ แฌแแโ แแแแแแแแจแ แงแแแแแคแแ แ, แ แแกแ แจแแชแแแแช แจแแกแแซแแแแแแแ, แแชแแแแแ แแฎแแแแ แแแแแแจแ แแฅแขแ. แแก แจแแแซแแแแ แแงแแก แแแแแฎแแแแแ แแ แแคแแฅแขแฃแ แ, แ แแแแกแแช แชแแขแ แแแแแแแ แแ แแก แแจแแแแแแ แแชแแแแแ, แแแแ แแ แฎแจแแ แแ แแก 500 แกแขแ แแฅแแแแแแ แกแแจแแแแแ แแแแแแแแแ แแแแแ แแแแ, แฃแคแ แ แแแขแ แแฃ-แแแแชแฎแแแแแแแแ, แแแแ แ แ แฃแกแแแแก แแแขแแจแ แแแฌแแแ แแแแแแแ แกแแญแแ แ.
แแแแแแ แขแแแ 3. แชแแแแแแแแแแก แแแแแแแแแชแแ.
แแกแแแแแแก แฎแจแแ แแ แแ แแกแแแ, แ แแขแแ แแแแฆแแแซแแก แกแฎแแแก แแแแแจแ, แแ แกแแ แแ แแก แแแแ แแแแแแฃแ แ แขแแแแคแแแ. แแ แแ แแแแแแแขแแ แแแขแแแฃแ แ แแฃแ แแแแ.
แแแแแฌแงแแ แจแแกแแแ แฉแแแแกแฎแแแก แแ แแชแแกแแ:
class PourOperation: IOperation{
PourOperation(ILogger log /*....*/){/*...*/}
//...
void Do(){
_log.Log($"Before pour with {_hand} and {_bottle}");
//Pour business logic ...
_log.Log($"After pour with {_hand} and {_bottle}");
}
}
แแแกแจแ แฉแแกแแแก แแแแ PourOperation, แแแกแฃแฎแแกแแแแแแแแแกแ แแ แแแแแแกแฃแแแชแแแก แแแแแกแแแ แแกแแ แแแแแแ แฃแแแ แแแแแฅแแแแแ, แแแแ แแ แแฎแแ แแแแแแฃแแ แแแ แ แชแแแแแแแแแแแก แแ แแแชแแแจแ. แแแ แแ แแแแแ แแแแ แแชแแแกแ, แ แแแแแแช แจแแแซแแแแ แจแแแชแแแแแก, แชแแแแแแแแ แฎแแแแ แแแแแ แฎแแช. แแฅแแแ แแแแแฌแแแ แแแแแงแแคแ แแ แกแแแชแแแแฃแ แ แแแแแ แแก แจแแฅแแแ แฉแแแแกแฎแแแก แแแแ แแชแแแกแแแแก:
interface IPourLogger{
void LogBefore(IHand, IBottle){}
void LogAfter(IHand, IBottle){}
void OnError(IHand, IBottle, Exception){}
}
class PourOperation: IOperation{
PourOperation(IPourLogger log /*....*/){/*...*/}
//...
void Do(){
_log.LogBefore(_hand, _bottle);
try{
//... business logic
_log.LogAfter(_hand, _bottle");
}
catch(exception e){
_log.OnError(_hand, _bottle, e)
}
}
}
แแแแแแฌแแแแแแ แแแแแฎแแแแ แแแแก แจแแแแฉแแแแก LogAfter, แจแแกแแแ แแแ แ ะธ แแ แแ แจแแชแแแแ แแกแแแ แจแแแซแแแแ แจแแแชแแแแแก แแแแแแแแฃแแแฃแ แแ แแ, แฌแแแ แแแแแฏแแแแก แแแแแแแแแ, แจแแแฅแแแแแ แกแแแ แแแแกแ: PourLogger แแแ แ, PourLoggerAfter ะธ PourErrorLogger.
แแ แแแแแฎแกแแแแ, แ แแ แกแแกแแแแแกแแแแก แกแแแ แแแแ แแชแแแ, แฉแแแ แแแฆแแแ แฎแ-แขแงแแก แชแฎแ แ แแแแกแก. แจแแแแแแ, แแแแแ แกแแกแแแแ แฌแ แ แจแแแแแแ 14 (!!!) แแแแกแแกแแแ.
แฐแแแแ แแแแ? แซแแแแก! แแแแแฃแแ แแแชแ แแแจแแแก แฎแแแงแฃแแแแ แแ แแแงแแคแก โแฉแแแกแฎแแแแกโ แแแแแแขแแ แจแ, แญแแฅแแจแ, แฉแแกแฎแแแก แแแแ แแขแแ แแแแ, แฌแงแแแแแแแ แแแแแแก แกแแ แแแกแแ, แแแแแแฃแแแแแก แจแแฏแแฎแแแแก แคแแแแแฃแ แแแแแแแ แแ แแแแแแแแ แแแแ แขแแแจแ แแก แจแแแชแแแแ แแแแ แแแแ แแแแแแแแแแฃแแแแแแ. แแแแแแแฃแ แ แชแแแแแแแ. แแ แแแ แฌแแฃแแแ, แแก แแ แแแฉแแ แแแแ.
แแ แแ แแก แแแแ แ แแแแแก แแ แแแกแแแแแแแ, แ แแ SRP แแ แแก แแฆแแแ แแแ แแแ แแแกแคแแ แ แกแแแแคแแแแแแแ แแ แแแแแแ แแแคแกแแก แกแแแแแแจแแ...
... Srp-แแก แแแกแแแ แแแคแแแแชแแแก แแ แกแแแแแแก แจแแกแแฎแแ แแแแกแแ แจแแกแฌแแแแแก แแแ แแจแ:
โแแ แแแแแ แแแกแฃแฎแแกแแแแแแแแแก แแ แแแชแแแ แแแแแแก, แ แแ แชแแแแแแแแแแก แแกแแแแกแ แแแแแแแ แฃแแแ แแแแฎแแแแแแก แแ แ แแแแแแแก". แแ "แ แ แชแแแแแแแแแ แแ แแแ แฃแแแ แแแแฎแแแแแแก แแ แ แแแแแแแก"
แแแฃ, แแฃ แฉแแแ แจแแแชแแแแ แแแแ แแชแแแก แแแแแแแก, แแแจแแ แแก แฃแแแ แจแแแชแแแแแ แแ แ แแแแแแแก.
แแก แซแแแแแ แแแแจแแแแแแแแแ แแฃแแฅแขแแ - แ แแแแแ SRP-แแก แงแแแแ แแฎแกแแ-แแแแแแ แขแแแ, แ แแแแแแช แแแแแ แแงแ แแแแฅแแแแ, แ แแ แกแแญแแ แ แแงแ แขแแแแแแก แแแแกแฎแแ แแแ แแแแ แแแแกแฎแแ แแแแกแแก, แแแฃ แแแ แแแแฌแแกแแก โแแแแแแแ แจแแแฆแฃแแแโ แแแแแฅแขแแก แแแแแแ แแ แแฎแแ แฉแแแ แแกแแฃแแ แแแ โแฅแแแแแแแ แจแแแฆแฃแแแแแโ. แฒกแฎแแ แกแแขแงแแแแแ, SRP แแ แ แแฎแแแแ แแแแแฎแแแก โแแแแกแฎแแ แแแแก แแแฅแฃแชแแแชแแแแกแแกโ, แแ แแแแ แแ แแแแแแญแแ แแแก แแแก - โแแฃ แแแแแขแแ แแแ แฃแ แแแแ แแแแแแแจแแ แแแฃแ แแแแแแแกโ. แแก แแ แแก แแแแ แแ แซแแแ แแแแแแก แกแแแแ แกแกแ แแ แแแแแฃแแแก แแแชแก แจแแ แแก!
แแฎแแ แแกแแแแแ แแแแ แฃแแแ แฃแแแ แแแ แซแแแก. แแแ แแ แแแแกแ, แ แแ แแ แแ แแก แกแแญแแ แ IPourLogger logger-แแก แกแแ แแแแกแแ แแแงแแคแ, แฉแแแ แแกแแแ แจแแแแแซแแแ แแแแแแ แแแแแแ แงแแแแ แแแแแ แ แแ แ แขแแแแ:
class OperationLogger{
public OperationLogger(string operationName){/*..*/}
public void LogBefore(object[] args){/*...*/}
public void LogAfter(object[] args){/*..*/}
public void LogError(object[] args, exception e){/*..*/}
}
แแ แแฃ แแแแแแแขแแแ แแแแแฎแ แขแแแแก แแแแ แแชแแแก, แแแจแแ แแแกแแ แจแแกแแแ แฃแแแ แแแแ แแ แแก. แแ แแแแแ แแแแ แแชแแแแแก แแแแ แแ แแก แกแฃแคแแ แแ แแแแแกแฃแคแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แฎแแแฃแ แแกแแแ.
แจแแแแแแ, แฉแแแ แแแแฅแแก 5 แแแแกแ แกแแกแแแแแก แแ แแแแแแแก แแแแแกแแญแ แแแแ:
- แฉแแแแกแฎแแแก แแแแ แแชแแ
- แกแแกแแแแแก แแแแ แแชแแ
- แฉแแแแขแแแก แแแแ แแชแแ
- แแแแแ แ
- แกแแกแแแแแก แคแแกแแแ
แแแแแแฃแแ แแแแแแแ แแแกแฃแฎแแกแแแแแแแแ แแแแชแ แแ แแ แ แคแฃแแฅแชแแแแ แแ แแฅแแก แชแแแแแแแแก แแ แแ แแแแแแ. แชแแแแแแแแก แแกแแแแกแ แงแแแแ แฌแแกแ แแฎแแแก แแแแแแ แแแแก.
แ แแแแฃแ แ แชแฎแแแ แแแแก แแแแแแแแ
แฉแแแ แแ แแฎแแ แแแแฌแแ แแ แกแแ แแแกแ b2b แแแแแแขแแก แแแขแแแแขแฃแ แแ แ แแแแกแขแ แแชแแแกแแแแก. แแ แฆแแแ แแแก แแแแแแ แแแแแฉแแแ แแกแแแแกแ แจแแแแแ แกแแก 200 แกแขแ แแฅแแแแกแแแแก:
- แแแแแแแ 1C-แแ แแ แจแแฅแแแแแ แแแแแ แแจแ
- แแ แแแแแ แแจแแ แแแแแแแ แแแแแฎแแแก แแแแฃแแแ แแ แจแแฅแแแแแ แแแ แแฅ
- แจแแแแแฌแแแ, แ แแ แแกแแแ แแแแแ แแจแแก แแแแแ แแจแ แแ แแ แแก แจแแฅแแแแแ แแแแแแ แกแแ แแแ แแ
- แฒแฎแแแ แแแแแ แแจแแก แแแฎแกแแ
- แแแแแแขแแ แ แแแแกแขแ แแชแแแก แจแแแแแแแ แแแแแฎแแแก แแแแฃแแจแ แแ 1c แแแแแ แ แ แแแแกแขแ แแชแแแก แจแแแแแแแแก แกแแ แแแกแก
- แแแแแแขแแ แแแแแ แแจแแก แแแคแแ แแแชแแ แแ แชแฎแ แแแจแ
- แจแแฅแแแแแ แแฃแแฅแขแแก แแแแแ แ แแ แแแแแแขแแกแแแแก แแฃแแฅแขแแก แกแแ แแแกแจแ. แแแแแแชแแ แแฅแแแแ 1c แแแแแ แแจแแก แแแแแ แ แแ แกแแ แแแกแก.
แแ แแงแ แแแแแ 10 แแแแแแก แแแแ แแชแแ แแ แกแแแจแ แกแแจแแแแแ แแแแจแแ แแ. แแแแฅแแแก แงแแแแแก แกแญแแ แแแแแแ แแแแแ แแจแแก แแแแแฅแขแ. แแแ แแแแก แแแฎแแแแ แจแ แกแแญแแ แ แแงแ แฌแแ แขแแแแก ID แแ แแแแแแขแแก แกแแฎแแแ.
แแ แแกแแแแแแแ แ แแคแแฅแขแแ แแ แแแแก แจแแแแแ แฉแแแ แจแแแซแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแก แแ แแแแแ แแจแแแ แแฃแจแแแแแก แแแแแแ แแ แแแฃแแแกแแก แชแแแแ แแแแแแแแแ/แแแแกแแแแ แแแแแงแแคแ. แฆแแแ แแแก แแแแแแแ แแแแแแแแแ, แแแแ แแ แแแ แฉแ แแแแแก 100 แกแขแ แแฅแแแ, แ แแแแแแ แแแแฎแกแแ แฃแแ แแแแ แแ แกแฃแ แแ.
แแฎแแแแ แ แแแแแแแแ แแฆแแก แจแแแแแ แแแแ แแแ, แ แแ แแ "แแกแฃแแฃแฅแ" แแแแแแแก แแ แกแ แแ แแก แแแแแแก แแแแแ แแแแ. แแ แ แแ แขแแฅแแแแฃแ แ แแแฎแแกแแแแแแแแแแก แแ แแแแแแแฃแ แ แแฆแฌแแ แ แกแแแแแแ แ แแฃแแ แแงแ. แแ แแก แแ แแก แแ แแแแแแแก แแแฌแแแแแแ แแแจแแแก แแชแแแแแแ, แ แแแแแแช แแแแ แฆแแแแก SRP-แก แแ แแ แ แแแ แแฅแแ.
แคแแ แแแแแแแ.
แแ แแ แแแ แขแ แแแแขแแแแ แฉแแแแ แแแแ แแแ. แแแแแจแ แแแ แชแ แแแแแแ - แฉแแแ แแฃแชแแแแแแแ แแแแฃแแ แฃแแแแแแ แแแก แแแแกแแ. แแฎแแ แแแแแ แแแแแคแแ แแแ แชแแแแ แแ แกแขแแขแแแแแ.
แคแแ แแแแแแแ 1. SRP-แแก แแแแแแ แขแแแ
- แแแแแงแแแแ แแแแแแแขแแแ แแกแ, แ แแ แแแแแแฃแแ แแแแแแแ แแแกแฃแฎแแกแแแแแแแแ แแ แ แ แแแแแ.
- แแแกแฃแฎแแกแแแแแแแแ แแแจแแแแก โแจแแชแแแแก แแแแแแกโ. แแแฃ, แแแแแแฃแ แแแแแแแขแก แแฅแแก แชแแแแแแแแก แแฎแแแแ แแ แแ แแแแแแ, แแแแแแก แแแแแแแก แแแแแกแแแ แแกแแ.
- แแแขแแแชแแฃแ แ แชแแแแแแแแแ แแแแแแก แแแแแแแจแ. แแแแแแแแแแฃแแ แฃแแแ แแงแแก. แแแแแแแขแแแ, แ แแแแแแแช แกแแแฅแ แแแฃแแแ แแชแแแแแ, แแฎแแแก แฃแแแ แแงแแก.
แคแแ แแแแแแแ 2. แแฃแชแแแแแแแ แแแแแจแแแแฌแแแแแก แแ แแขแแ แแฃแแแแ.
แแ แแแ แแแแฎแ แกแแแแแ แแกแ แแ แแขแแ แแฃแแแแ SRP-แแก แจแแกแแกแ แฃแแแแแแ. แแแแ แแ แแ แแก แแฃแชแแแแแแแ แแแ แแแแแ:
1) แฐแแแแฎแแ แกแแแฃแแแ แแแแก, แ แแก แแแแแแแก แแก แแแแกแ/แแแแแแ/แแแแฃแแ/แแแแกแแฎแฃแ แแแ. แแฅแแแ แฃแแแ แฃแแแกแฃแฎแแ แแแก แแแ แขแแแ แแแแแแ แขแแแแ. ( แฒแแแแแแแ
แแแแแแ แขแแแแแ
แแฃแแชแ, แแแแฏแแ แซแแแแแ แ แแฃแแแ แแแ แขแแแ แแแแแแ แขแแแแก แแแแแ
2) แจแแชแแแแแก แแแแแกแฌแแ แแแ แแ แแฎแแแ แคแฃแแฅแชแแแก แแแแแขแแแ แแแแแแแแก แแฎแแแแก แคแแแแแแแก/แแแแกแแแแก แแแแแแแแฃแ แ แแแแแแแแแแ. แแแแแแฃแ แจแแแแฎแแแแแจแ - แแ แแ.
แแแแแแ แขแแแแแ
แแแแแแแแ แแแกแฃแฎแแกแแแแแแแแ (แแแฎแแกแแแแแแแแแแ แแ แจแแชแแแแแแแ) แแ แแก แฉแแกแแฃแแ แแ แ แคแแแแจแ/แแแแกแจแ, แแฅแแแ แแฃแกแขแแ แแชแแ แกแแ แฃแแแ แแแฎแแ แแ แ แ แฃแแแ แจแแชแแแแแ. แแแแแแแแแ: แฉแแฌแแ แแก แแแแ แแชแแแแแก แแแแแแฃแจแแแแแแก แจแแชแแแแก แคแฃแแฅแชแแ แแแแแฎแแแก แแฎแแแแ แแแแแ แแก แจแแชแแแแก. แแ แแ แแก แกแแญแแ แ แแแแแ แฉแแแ แแแแแก แแแจแแแแ.
แแแแแ แแ แแ แแแแแแแแแ แแฎแแแ UI แแแแขแ แแแแก แแแแแขแแแ, แฌแแแ แแกแแแแกแ. แแฃ แแก แแแแซแฃแแแแ แแแแแแขแแ 10 แกแฎแแแแแกแฎแแ แแ แแแฃแแ แแ 15 แแแแกแฎแแแแแแฃแแ แแแแแแงแแแแ, แ แแแแ แช แฉแแแก, แแแแแญแแ แแแแฃแแ แฎแแ แ.
3) แแฃ แ แแแแแแแแ แแแแแแแแแ แ แแฃแจแแแแก แแฅแแแแ แแ แแแฅแขแแก แกแฎแแแแแกแฎแแ แแแฎแแกแแแแแแแแแแ, แแแจแแ แจแแ แฌแงแแแก แแแแคแแแฅแขแแก แแแแแแแแ, แแแฃ แแแแแแแแ แแแแกแ, แ แแ แแ แแ แแ แแแแแ แคแแแแ/แแแแกแ แจแแแชแแแแแก แ แแแแแแแแ แแแแแแแแแ แแ แแ แแแ แแฃแแแ, แแแแแแแแฃแ แแ.
แแแแแแ แขแแแแแ
แแฃ แแฎแแแ แแแแ แแชแแแก โแแแแกแฎแแ แแ แแงแ แแแแแแแก แฅแแแจโ แแแแแขแแแแกแแก, แแฅแแแ แฃแแแ แแแแฅแแแแแ แแแแแ แแ, แแแแแแแกแ แแ แฉแแแแกแฎแแแก แแแแ แแชแแแแ, แแแจแแ, แ แแแแ แช แฉแแแก, แแแกแฃแฎแแกแแแแแแแแแแ แแ แแกแฌแแ แแ แแงแแคแ. แ แ แแฅแแ แฃแแแ, แแก แงแแแแแแแแก แแ แแ แแก แจแแกแแซแแแแแแ, แแแแ แแ แฃแแแ แแแชแแแแ, แ แแ แแก แแแฉแแแแแแแแ แจแแแแแชแแ แแ.
4) แแแแแแก แแแแแแแก แจแแกแแฎแแ แแแแแแฃแกแขแแแแแ แแแแฎแแแก แแแกแแแกแแก (แแแแแแแแแ แแกแแแ แแ แแแแแฏแแ แแกแแแ), แแฅแแแ แจแแแแฎแแ แ แแแแชแ แแ แแ แ แแแแกแจแ/แคแแแแจแ แแ แแฎแแแแ แแฅแแแแ แแฆแแแ แแแคแแ แแแชแแแก.
แแแแแแ แขแแแแแ
แคแฃแแฅแชแแแแ, แฌแแกแแแ แแ แแแแแ แแแแแแ แแฌแแ แแแ แแแแแแฅแขแฃแ แแ, แแแแแแฃแแ แแ แ แแแแแแแก แแ แแ แแ แแก แแแแแคแแแขแฃแแ แแ แแจแแแแ แแแแแก แกแแแ แชแแจแ.
5) แแแกแแฎแแแแแ แแแกแแแแแแ.
แแแแแแ แขแแแแแ
แฉแแแแ แแแแกแ แแ แแแแแแ แแแกแฃแฎแแกแแแแแแแแ แแ แ แ แแแแแ แแ แแแกแฃแฎแแกแแแแแแแแ แแแกแแฎแแแ แแแก แกแแฎแแแแ
AllManagersManagerService - แกแแแแ แแฃแแแ แฆแแแ แแแก แแแแกแ
LocalPayment - แแแแแ แแ แ
แคแแ แแแแแแแ 3. Occam-แแแ แแแแ แแแแแแแแ แแแแก แแแแแแแแแแแ.
แแแแแแแแก แแแกแแฌแงแแกแจแ แแแแแฃแแแ แแ แแชแแก แแ แแ แแ แซแแแแก แแ แแแแแแแก แแแแแญแ แแก แงแแแแ แแแฎแแแฌแแแแแแก แแ แจแแฃแซแแแ แจแแชแแแแ แแแฃแจแแแก. แจแแชแแแแแก แแแจแแแแ แจแแแแซแแแแ แกแฎแแแแแกแฎแแ แแแแ:
- แแแฎแแแแ แแแแแฅแขแแแ แซแแแแแ แแแแ แกแฎแแแแแกแฎแแ แแแกแฃแฎแแกแแแแแแแแแแแก แจแแ แฌแงแแแ
- แฎแแแแฎแแแ แฉแแ แฉแ แแ แแ แแแกแฃแฎแแกแแแแแแแแแก แกแฎแแแแแกแฎแแ แขแแแแแแ แแแงแแคแแ
- แแ แแกแฌแแ แแ แแแแกแแแฆแแ แแ แแแกแฃแฎแแกแแแแแแแแแก แกแแแฆแแ แแแ
แแแแจแแแแแแแแแแ แแแแฎแกแแแแแก แฌแแกแ: โแฏแแแแ แแแแ แจแแชแแแแ แแแฃแจแแโ แแ โแแฃ แแแ แฌแแฃแแแแฃแแ แแ แฎแแ , แแ แแแงแ แแแโ. แแฃ, แแแแแแแแแ, แแฅแแแแ แแแแกแ แจแแแชแแแก แแ แแแกแฃแฎแแกแแแแแแแแแก, แแแจแแ แแก แแแแแช แแแกแแแแแแ แแ แจแแแซแแแแ แแแแงแแก แแ แแ แแแแแแขแแก แแแแแก แแแแแแแแฃแ แ แชแแแแแแแแแแ. แจแฃแจแแก แแแขแแฎแแแแแแ แจแฃแจแแก แแฌแงแแแ, แ แแแแ แช แฌแแกแ, แฃแคแ แ แ แแฃแแแ แแแแขแแฅแกแขแแก แแแแ แชแแแแแแก แแแแ แ แแแแแแแแ แคแแแแแ แแ แแแแแแขแแก แแแแจแ แกแแญแแ แ แแแแแแแแแแฃแแแแแก แแ แแ แกแแแแแแก แแแแ.
แแ แแ แแแก แแฆแ แแฃแฌแแแแ
SRP-แแก แกแคแแ แ แแ แจแแแแแคแแ แแแแแ OOP แแ SOLID-แแ. แแก แแฎแแแ แแแแแแแแก, แคแฃแแฅแชแแแแก, แแแแกแแแก, แแแแฃแแแแก, แแแแ แแกแแ แแแกแแแกแ แแ แกแแ แแแกแแแก. แแก แแฎแแแ แ แแแแ แช "figax-figax-and-prod" แแ "rocket-science" แแแแแแแแ แแแแก, แ แแช แกแแแงแแ แแก แงแแแแแแ แฃแแแแแกแก แฎแแแก. แแฃ แแแคแแฅแ แแแแแ, แแก แแแแฅแแแก แงแแแแ แแแแแแแ แแแก แคแฃแแแแแแแขแฃแ แ แแ แแแชแแแแ. แแแฅแแแแแฃแ แ แแแแแแแ แแ, แแแแขแ แแแแก แกแแกแขแแแแแ แแ, แแแ แแแแช, แงแแแแ แ แแฃแแ แกแแกแขแแแ แแแแแฃแแแ แแแแแแแแแขแแแแกแแแ, แแ "แฅแแแคแ แแแแแแขแแชแแ" แแ แแแแแก แแแแแแแแ แแแก แแแฅแแแแแแแก, "แแแแแแขแแ แคแ แแแแแแขแแชแแ" แแ แแแแแก แแแแแแแแ แแแก แแคแแฅแขแฃแ แแแแก แแ แแ แแกแฌแแ แ แกแแแฆแแ แแแ แแ แแแแแก แแแ แแแแแแแก แแ แกแแแจแแแแแก.
SRP แแ แแ แแก แแแแแแแแแแ แแฃแแแแแ แแ แแ แแ แแก แแฃแกแขแ แแแชแแแแ แแแแก แแแฌแแแ. แแก แแ แฆแแแแก แฉแแแแก แแแแแแแแฃแ แแ แคแกแแฅแแแแแแฃแ แจแแแฆแฃแแแแแก, แแก แแ แแก แแฎแแแแ แแแ แแแแแฃแแแก แแแแแแแแแก แขแแแแแก แแแแแงแแแแแแ แ แแฃแแ แกแแกแขแแแแแแก แแแแขแ แแแแกแ แแ แแแแแแแแ แแแแกแแแแก. แแก แแแแฃแแแแแ, แ แแแแ แแแแจแแแแ แกแแกแขแแแ. แแแแแแแแ แแแแ แคแแ แแฃแแแ แแแ แแแแแฎแแแแ แขแแแแแแขแแแก แกแแแแแแ แแแ แ แแแแแแแแแก, แแแแ แแ แแแแแ แแแฅแแก, แ แแ แแก แกแขแแขแแ แแกแฃแคแแแแแแก แแแแแแแก แคแแ แแก.
แฌแงแแ แ: www.habr.com