αααααΆααααααα½ααα»αααααΌααααα½α α¬α α
ααΆαααααΆαααααααΆαααα½ααα»αααααΌααααα½αα
aka αααααΆαααααααΆααααααααα½αα―ααααααΆα - αα»αααα’α·αααααΆααααΆαααααα»αααΆαααα αα·ααααα½ααααα½αα±αααααααααΆα
αααααααα
α―ααααΆαααα’αααααααααααααα·ααΈα
ααΆαααααΆααααααΆαααααααααααααΎαααααΌααααααααα»αααΆαα½αααΉααααααΆααααααααΆαααΎαα‘αΎααα ααΎαααααΆαααΈ XNUMX αα αααααααααααααα·αααααααααΌαααΆααααααα ααααααΎααααΈααααΎα±αααα·αααα ααααΈαααααΌα - αα·ααααα·αααααΆααα
αα αααα»ααααα ααΎααααα ααααΆαααα»ααααααΆαααααΆααΈ 8 αα 9 ααΆαα α αΎαααΆαααΆαααααα½ααααααααα½α - αααα»αααΆααΉαααΉααααΌαααΆαα½αααααΏααααα»α αααααα±ααα’αααααΈαα½αααΈαααα»αα αΆαααααΌααΆααΆαα αααα»αααα ααΈααΈαααΉαααΆ α αΎαααΈααΈααΆαα’αΆα αΆαααααααα α’αααααΆααααααΆααααα ααααααα·ααααα·ααΆααααααααα½αααααΆααααΈαα α α»ααααα αααααα½ααααα»αα
ααααΈαααααα ααα½αααΆαα α»αα»αααααΈ ααΊααΆααΆαα’αα»ααααααααα’αααα αα ααααααΈ
αα·ααααα 1. αααα½ααα»αααααΌααααα½αα
αα·αααααααααΌαααΆααααααααΆααααααα½ααα»αααααΌααααα½α (SRP) α ααααΆ α’αααααΆαααΈαα½ααααΆααααα½ααα»αααααΌα αα·αα ααα»αααααααΆααα’αααα·ααΆααααααααα½α α αΎαααΆααΆααααα½ααα»αααααΌααααα½ααααα
αα·α
αΆαααΆααααα» "α’αααααΉα" (Tippler).
ααΎααααΈα’αα»αααααααααΆααααααααααααα αα ααααααΈ ααΎαααΉααααα
ααααΆαααα½ααα»αααααΌαααΆααΈα
- αα½αα αΆαα (PourOperation)
- ααααααααα½αααα (DrinkUpOperation)
- ααααΆααααΆαα’αΆα αΆααααααα (ααααα·ααααα·ααΆα TakeBite)
α’αααα αΌααα½ααααα»αααααΎαααΆαααΈαα½ααααα½ααα»αααααΌαα ααααααΆαα»αααααα½αααααααΎαααΆα αααααΊααΆααααα½ααα»αααααΌαα’αΆααΌαα·ααα½α - ααΉα α αΆαα α¬α’αΆα αΆαααααααα
αα αααα»αααα, ααααααΉα, ααΊααΆ facade αααααΆααααααα·ααααα·ααΆαααΆααααα:
Ρlass Tippler {
//...
void Act(){
_pourOperation.Do() // Π½Π°Π»ΠΈΡΡ
_drinkUpOperation.Do() // Π²ΡΠΏΠΈΡΡ
_takeBiteOperation.Do() // Π·Π°ΠΊΡΡΠΈΡΡ
}
}
α ααα»α’αααΈ?
α’αααααααααααααα·ααΈααααααα»ααααααααααΌααααααΆαα ape-man α αΎα ape-man ααΊαα·αααα
α·ααααα»αααΆαα αααααααα αα·αααααααααααΆααα ααΆααβα’αΆα
βααΆααβαα·αβαααβα’αααΈ 3 αα
7 ααΆαααβαααα»αβαααβααβαα½αβα
αααα»αβααααΈβα’αααβαααααΉαβααΆαβααΆαααβα£βαααΆαβαααβα ααααααΆαααΆααααα ααααα·αααΎααΎααααααααΌαααααα½ααααααΉα αααααΆααΉαααΆααα ααααααΆ ααΆαααααα»ααα αα·αααΆααααααααααααααααΆαα·αα
ααα
ααα’αααΈαααααΆαα α αΎαααΆααα’αααααααΉαααΆααα
αααα»ααα½αααα·ααΈααΆααααααα½αα αααα»αααααΆααααΆα’αααααΆαααΎαααΌααααααααα
αααα»αααΆαα’αα»ααααααααα’αααα αα·ααααααΆααΆαααααΎαααααααα»αααααααααα»ααααααΆααα
α·αααααΆαααααααα
αααααΆααα·αααα ααααααααΆαααααααΌαααΆααα ααΆα‘αΎαααΎααααΈαααααααααΎααααα»αα·ααααααα·ααα αααα»αααααΆαααααααΆααα αα αααα»αααΆααααααΎαααααααααααΆαα ααΆααα’αΆα αα»ααα½αααΆααΆαα½αααααΆ αααααΌααααα»αααααα»ααααΈααΈαα½αααΆ α αΎαααααΆα αααΆααΆαααααααΌα ααααΆα αααααααΎααααααααααΌαααα αΆααα ααΆαααΆααααααΎαααααααααα’ααα α’αααα’αΆα ααΎαααααΆα ααααααααααΆα α αΎαααΎαααααααΆαααΎααααα’α½α ααααα ααΆααααα»ααααααΉαααΆααααα’αααααα ααα»ααααα’ααααα·αα’αΆα ααΎαααΎααααΆαααΆαα»ααΆααα’αααααααααΆαααΈααααα»αααααααα½ααα αααα»α "ααΆαα α»ααααααΈ" αα½αα αααΆαα αα ααΆαα "αα»ααααααΆ" αα·αα’αΆα α
ααΌα αααα α’αααααααααααααα·ααΈααααααα»ααααααααααααααΆααααα»αααααααΆααα ααΆαααα»αααααΆαα»ααααα·αααΌααααα»αααααΆα αα·αααααΎαααΆαα αααααΈααΆαααΆαααΆααααα ααΆα’αΆα ααααΌαααΆαααααα α ααααΆααα·ααΈααααααααααΆα αα αααα»αααααααα αΆαααααΆα αααΎα ααααααααααα αΌααα αααα»αααααΆα α αΎααα αααα»αααααααααααΎα ααΆααααΆαααααααα’αα‘α·α ααααΌαα·α ααΆααΆαααααΆαααΈααα·αα±ααα αΆααααααΎα αααα’αΆα ααΆααααα αΆαα ααααα½ααα»αα
α₯α‘αΌαααα αα ααααααΈ ααΊααΆαααααΆααααααααααααααΈααααααααα αααααΊαααααααααααααΌαααΌααααααΆαααααα αα.
ααΆαααα·ααΆαααΆααΆα αΆαααΆα ααααα»αααΆααααα ααααΆααααααΆαααααααΆααααα αα "ααΆαααα½ααα»αααααΌα" αααααΊααααα ααΆαααΆααα·α αα ααααααα»αα½αα ααα½αα
ααααααα‘ααααααΉααα·α αα·ααα»ααααααααα·ααααα»ααααααΆααα½αααΆααααααΌα α α·αααα
- ααΌαααΆαααααΆααα ααΆα αααΆααααΆααααααΆαααα αααααααααα·α
- ααΌαα’αΆα ααααΌαααΆαααααααααα’αααααααααααααα·ααΈααΆα αααΎααααα»αααααααα½α (ααΈαα½αααααααααΆαα»ααΆα ααααα‘αα)
- ααΆαααααΎααααααααααααααααααααα·ααααΌαααΆαααααΎα±ααααΆαααα - ααΆαα»ααΆααααααΆαααα ααΆααΆααααααΆααααα½ααααα»αααΆαααααΎααααα
- αααΆαααΆαααααΌαααα α‘αΎα - α’αααα’αΆα αααα½αααΆαα DrinkUpOperation αααβααααα·ααααα·ααΆαβαα½αβαααβαααααΉαβα αΆααβααΆαβαααααβαα»α α¬αααα½αααααα·ααααα·ααΆαα αΆααααΆαα½αααααα·ααααα·ααΆααααα’αααααΆαααααΆ αα·αααΉα α¬αααΌααΆααΆ αα·αααααΆαααα α’αΆαααααααΎαααααΌαααΆαα’αΆααΈααααα α’αααα’αΆα ααααΎα’αααΈααααααααΆαααααα·αα αΆαααΆα ααααααΌααα·ααΈααΆααααα Tippler.α αααΆαα.
- ααΈααααα·ααααα·ααΆαααΆαααααα’αααα’αΆα ααα glutton (αααααααΎαα ααααα·ααααα·ααΆα TakeBit), ααααΏααααααΉα (ααααΎαα 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 αααααΆααααΆ "αααΌαα»αααΆαα ααα»αααααα½ααααααΎααααΈααααΆααααααΌα"α αααααΊ "ααΆαααα½ααα»αααααΌαααΊααΆα ααα»αααααααΆααααΆαααααΆααααααΌα" α
(ααΆα αΆααααΌα ααΆαα»αααααααΆααααααΎααα·αααααααΎαααΆααααα»αα α·αααααΎαααααααΆα telepathic αααααα»ααααααΆ)
α₯α‘αΌααααα’αααΈαααΆαααααΆααα αΌααα αααα»αααααααα αααα‘ααααΈααααΆ ααΎαα’αΆα ααααΆααααααΌαααΈαα·αα·ααΈααααΆαα αΆαα ααΆαααΉα αα·αα’αΆα αΆααααααα ααα»αααααα αααα»αα’αααααΉααααα½αα―α ααΎαα’αΆα ααααΆααααααΌαααααααΆαα αα·ααααΆαααΆαααααααα·ααααα·ααΆαααα»ααααα α§ααΆα ααα αααααααΆααααΈα’αΆα αΆααααααααα»ααααααΉα α¬ααααααααΆαα’αΆααααα»ααα
αα αααα»ααα·ααΈααΆααααα "ααααααα αα»α αα·ααααα½αααα" α’αααΈααααααααΆααααα’αΆα ααααΆααααααΌαααΆαααααΌαααΆαααααΆααααααΌααααα αααα»ααα·ααΈααΆαααααααα»αααααα α αααΆαα. αααα’αΆα α’αΆαααΆα αα·αααΆαααααα·αααααΆααα ααααααααΆααααααα·ααααΆαα·α αα½α α αΎαααΆααααααΉαααααΆααααααΌα ααα»ααααααΆααΏααααΆαααα ααααααα·ααΈααΆααααααααα½αα±αααααααααΆα αα 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)
}
}
}
α’αααα’αΆααααααα’α·αααα’ααααΉαααααααααΆαα αααααα ααα»ααααα, αααααα ααα»αα»αα ΠΈ ααα α»α ααα’αΆα ααααΌαααΆαααααΆααααααΌαααΆαααααααα»ααααααααα α αΎααααααΆαααααααααααΆααΆαα½αααΉαααα αΆααα»αααΉααααααΎαααααΆααα ααα½αααΈα PourLogger ααΈαα»α, PourLoggerAfter ΠΈ PourErrorLogger.
α αΎααααα αα αΆαααΆααΆαααααα·ααααα·ααΆαααΈαααααΆααα’αααααΉααα½αααΎαααα½αααΆαααααΆααααΆααααΎα ααα½αααααΆααα½αα ααΆααααααααααααααΉαααΆααααΌαααΆα 14 ααααΆαα (!!!) α
α’ααΈααααΌα‘αΆ? αα·ααΆα! αα»ααααααΆαααααΆαααααΆαααααααααααααΆαααΉαααααα "α’αααα αΆαα" αα ααΆαααΆαααΈαα αΆααααΉα αααα αα ααααα·ααααα·ααα αΆααααΉα ααααΆααααααααααααΉα ααααΌααΌαααααααααΆααααααααα·α αααααΌαααα»α α αΎααααααΆααααααΈααΆααααααΆααααΆααααΉαααααΆααΆαααααΆαααΆαα’αΆααααααααααααΆα α’ααααααα α αΎαααΏαααα»αααΆααααΉααα·ααααααα
αααααα ααα»α αααα αΎα αααααα»αααααΆα αααΎαααααα·ααααΆαααΆ αα ααααααΈ ααΆααΏααα·ααΆαααΈααααααααααΆααΌα α αΎααα ααααα»αααΆα...
... ααααα·αααΆααα·ααααΆα’αααΈα’αααα·ααΆααααα·αααααααΈααΈαα Srp:
βαααααΆααααααα½ααα»αααααΌααααα½αα ααααΆ αααααααααααααααΉαααΆαααααΆααααααΌα αα½ααααααααΆαα»ααα αααααααααα½α"α α¬ "α’αααΈβαααβααΆαβααααΆααβααααΌβαβαα½αβααααΆβαα½αβααβαααααΆβαα»αβαα βαα½αβααααααβ"
αααααΊααααα·αααΎααΎαααααΆααααααΌαααΆαααΆααααΎααααααα·ααααα·ααΆααα½ααααααΎαααααΌαααααααΆααααααΌαααΆαα αααααααααα½αα
αααααΆα ααα»α ααααΆααααΆαα αααααααΆααααΆααααααααααα αα ααααααΈ ααΆαααΎ ααΆααα·ααΆαααΆ α αΆαααΆα αααααΌααααααα αααααα ααααααααααα½ααααααα»αααααΌαααΆαααααα αααααΊαα½αααααΆαα βααααααααααΆαααΎβ ααΎααα αααααα» α αΎαα₯α‘αΌαααα ααΎααααα»ααα·ααΆαα’αααΈ "ααααααααααΆα" αα½α α αΎαα αααα»αβαααβαααααααα, αα ααααααΈ αα·αααααΉααααααααΌαα±αα "ααααα αααααααα " ααα»ααααααα αααααΆαααα·αααααΎα±ααααΆα α½ααααααΆα - "αα»αααααα αααααααααΆααααΆαα". αααααΆαααααΌαα·ααα’ααα αΆααααααΆαα‘αΆααααα Occam αα·ααα»ααααααΆ!
α₯α‘αΌααααα’αααααΉααα½αααααΆαα’αΆααααααααΌαααααΆαα ααααααααΈααΎααΆααα·ααααααΆαα·αα αΆαααΆα ααααα ααα’αααααΆααααΎ IPourLogger ααΆααΈααααΆαααα ααΎαααα’αΆα ααααα’αααααΆααααΎααΆααα’αααα ααΆαααααααα½ααααααα
class OperationLogger{
public OperationLogger(string operationName){/*..*/}
public void LogBefore(object[] args){/*...*/}
public void LogAfter(object[] args){/*..*/}
public void LogError(object[] args, exception e){/*..*/}
}
α αΎαααααα·αααΎααΎαααααααααααα·ααααα·ααΆαααααααααΈ XNUMX αααααΆαααΆααααΎαααααΆααααΆααΊαα½α ααΆααα αΎαα α αΎαααΌαααααααα·ααααα·ααΆααααα½αα―αααΊααα’αΆα αα·αααααΆααααααααααΆαααΈα αααααΆαα ααΆααααααααα
ααΆααααααααΎαααΆα 5 ααααΆαααααααΆαααααααααΆααααα αΆααααΆαααΉα:
- ααααα·ααααα·ααΆαα αΆαα
- ααααα·ααααα·ααΆαααΉα
- ααααα·ααααα·ααΆααααααα
- α’αααααΆααααΎ
- facade α’αααααΉα
αα½αααααααΆαααααα½ααα»αααααΌααααΆαααΉααααΉαα αααααα»αααΆααα½α α αΎαααΆαα ααα»αααα½ααααααΆααααΆαααααΆααααααΌαα α αααΆααααΆααα’αααααααααααααΉαααΆαααααΆααααααΌαααΆαααΈααΆαααα ααααααααα
α§ααΆα αααααΈαα·ααα·α
ααΎαααααΆααααΆααααααααααΆαααααααααΆααααΆαα α»αααααααααΆαααΈαααααα b2b αααααααααααααααα·α α αΎααα·ααΈααΆαααααααααααααααΆααα αΆααααΆααααα αΆααααα½ααααααΆαα 200 αααααΆααααααΆαα·ααΆααααααααααΆ:
- α αΌααα ααΆαα 1C α αΎααααααΎαααααΈαα½αα
- ααΆαα½αααΉαααααΈααα ααΌαα αΌααα ααΆαααααΌαα»ααααααααΆαα α αΎααααααΎαααΆαα ααΈααα
- αα·αα·αααααΎαααΆααααΈαααααΆαααααΈαααααααα·αααααΌαααΆααααααΎααα ααΎαααΆαααΈαααααα
- αααααΎαααααΈααααΈα
- ααααααααααααα α»αααααααααα»ααααΌαα»ααααααααΆαα αα·αααα 1c αα ααααΆααααααααααα α»αααααα
- ααααααααααααΆαααααΈαα αααα»αααΆααΆααααα
- αααααΎααααα ααα»α αααααΆααα’αα·αα·ααααααα αααα»αααααΆααααα ααα»α α α α»α αααααααΈ 1c ααααα’ααααα ααΆααααααΆαααααααα
α αΎαααΆαααααα·ααααα·ααΆαα’αΆααΈααααααααα αα 10 ααααα αααα»ααααααΈαααααΆαα½αααΉαααΆααααααΆαααααα½αα±αααααααααΆα α ααααΎααααααααααααΆααααΌαααΆαααααα»ααααΈα ααααααααΆααα ααα»α αα·ααααααα’αα·αα·ααααααΌαααΆαααΆα αΆαααΆα ααααα»αααΆαααααααΆαααααΆαα α ααΌαααααα
αααααΆααααΈαα½αααααααααΆααααααα’α‘αΎααα·α ααΎαα’αΆα αααααααΌαα αααααΆαα ααΆαααααααα αα·αα ααα»α αα½αα ααα½αααααΆαααααΎααΆαααΆαα½αααααΈαα ααΆαα·ααΈααΆααααα/ααααΆααααΆα ααααα‘ααα αα·ααΈααΆαααααααααααααααΆααα αΆααααΆαααααΎα±ααααΆααΆααααααΆααααα½α ααα»ααααααΆααααααΌαα ααα½α 100 ααααα ααα αααααααΆαααααα·αα ααα±ααααΆαα ααα
ααΆααααααααΆααααΈααΈαααΈααααααα»ααααααααααΆα αααΆααααΆααααΉαααΆααααα·ααΈααΆααααα "ααααΆα" αααααΊααΆαααα½ααααααααΆαα’αΆααΈαααααα α αΎαααΆααΆααα·αααααΆααΎααααααααααα αα αααααααΊαααα»αααααΆαααΆααα α αΎαβααΆβααΆβααΆαβααα»ααααβαααααβαα·ααΈααΆαααααβαααβααΆβαααααβαααβααΉαβααααΆαβααααααβααααααααΈ α αΎαβαα·αβαααα»αβαααα·αβααα
ααααα·ααα
αααβαααβαα»αβα²ααβα’αααβαααααΉαβαα βααααΆααβα―αα ααΌαααΉααααααααααα’ααα - ααΎαααααΆααααΆααΉααααααααα ααΆαα·ααα ααααααΆαα½αα α₯α‘αΌαβααα α αΌαβααΎαβαααααβα ααααααΉαβααΆβααααΌαααΆαβααΈβα’αααααβαααα
ααααααααααα α‘.αα·αααααααααααααααααααααααΈ
- αααααααΆαα»ααΎααααΈα±αααα½αααααααΆαααααα½ααα»αααααΌαα ααααααΏααα½αα
- αααα½ααα»αααααΌαααααΆαα±αα "α ααα»ααααΎααααΈααααΆααααααΌα" α αααααΊααΆαα»ααΈαα½ααααΆαα ααα»αααααα½αααααααααΆααααΆαααααΆααααααΌα ααΆααααααΉααααααα·ααααΆα’αΆααΈαααααα
- ααΆαααααΆααααααΌααααααΆαα»ααα αααααααααα·ααααΆα’αΆααΈαααααα ααααΌαααααααΌαααΆαααααΎααΌαααααΆααΈαααααα ααΆαα»αααααααΆααααααΌαααααΆαααααααααΌααααα αα·αα
ααααααααααα 2. αααααααα·αα·α ααααααααΆαααααΎαααααααααααα½αα―αα αΆαααΆα αα
αααα»αβαα·αβααΆαβααΎαβααααααβαα·αα·α ααααβαααααααααΆααβαααααΆααβαααααβαααααα αα ααααααΈ ααα ααα»ααααααΆαααααααααα αΆαααΆα αα
1) αα½ααααα½αα―αααΆααΎααααΆαα/αα·ααΈααΆααααα/αααΌαα»α/ααααΆαααααααααααΎα’αααΈα α’αααααααΌαααααααΎαααΆααΆαα½αααΉααα·αααααααΆααααα (ααΌαα’ααα»α
ααΆααααααα
ααααααΆαααΆααααα αααααααααΆαα·ααΆαααΆαααααα»αααΆαααααααααα·αααααααΆαααα
2) αα½ααα»αααα α»α α¬αααααααα»αααΆαααααΈαααααΆαααααα ααα½αα―αααΆα/ααααΆααα’αααααααΆα ααΆαα§ααααααα· - αα½αα
ααΆααααααα
αααααΆααααα½ααα»αααααΌα (αααααΆαααααααααα·ααα α¬ααα α»α) ααααΌαααΆααααα αΌααααα»αα―αααΆα/ααααΆαααα½α α’αααααΉαα αααΆααααΈαααααααααααααΌαααΎα αα·αα’αααΈαααααααΌαααααααα½αα α§ααΆα αααα αααααααα·αααααααΆαααααΆααααααΌαααααααααααααα·ααααα·ααΆαααΆααααΎααΉααααααΌαα±ααααααΆααααααΌαααα’αααααΆααααΎααα»αααααα αα·αα αΆαααΆα ααααααΆααααααΌαααααα αααααα
α§ααΆα ααααα½ααααααΊααΆαααααααααΆαααααααααα UI ααααΈ αααααααα ααΉαα’αααΈααααα»ααα ααααα·αααΎααααααααα’αααα±αααααααα 10 α’αααααΆααααααααααΆ αα·α 15 αααααα·ααΈααααααααααααααααΆ ααΆα αΆααααΌα ααΆα’ααααααα»αααααΎααΆααΎαα
3) ααααα·αααΎα’αααα’αα·ααααααααΆα αααΎααααα»αααααΎααΆαααΎαααααααα·ααααααααααααΆααααααααααααα’ααα αααααααααΆααααααααααααα αΌαααααΆ αααααΊααααααΆααααα―αααΆα/ααααΆααααΌα ααααΆααΉαααααΌαααΆαααααΆααααααΌααααα’αααα’αα·ααααααααΆα αααΎααααα»αααααααα½αααΊαα·α αα½α αααα»αα
ααΆααααααα
ααααα·αααΎαα αααααααααααααα·ααααα·ααΆαααααΈ "α αΆαααααΌααΆααΆαα ααααααα»" α’αααααααΌααααααΆαααααα’αααααΆααααΎααααα·ααααα·ααΆαααααΆαααΉααα·αα αΆαααααααΆα αΆααααΌα ααΆααΆαααα½ααα»αααααΌαααααΌαααΆααααα αααααΆαααΉααααΉαα ααΆααΆααα·αααΆααααααα·ααααααα’αΆα ααααΎαα ααΆαααααα»ααααααΎααα½αααααααΆααΆαααΆααααααααα½ααααααα
4) αα ααααα½ααααα½αα αααΆααααΆααα’αααΈαααααα·ααααΆα’αΆααΈααααα (ααΈα’αααα’αα·αααααα α¬α’αααααααααααα) α’αααα αΌααα αααα»αααααΆαα/α―αααΆααα½ααααΆαααΉααααΉα α αΎαααα½αααΆαααααααΆαααΈααΈαααααααα»αααααα
ααΆααααααα
αααααααα·ααα α αααΆαα α¬αααα½ααααααααΆαααααΌαααΆαααααααααΆαααΌα α ααα’αα ααΈαα½αααα αααααααααα½α αα·ααα·αααΆααααΆαααααααααΆαα·ααΆααααα αααααααΌααααααα
5) αααααααΊα αααΆααααΆααα
ααΆααααααα
ααααΆαα α¬αα·ααΈααΆαααααααααααΎαααΊααα½ααα»αααααΌαα ααααααΏααα½α α αΎαααΆαααα½ααα»αααααΌαααααΌαααΆααααα»ααααα αΆαααα αααα»ααααααααααααΆα
AllManagersManagerService - ααΆαα
αααΎαααααααΆααααΆαααααα
LocalPayment - αααα ααααΆαα·ααααααα
ααααααααααα 3. αα·ααΈααΆαααααα’αα·αααααα Occam-first α
αα ααΎαααααΌαααααΆααα ααΆαα»ααααααΆαα·αααΉααα·ααα·αααΆαα’αΆααααααααΆ subtleties ααΆααα’αααααααα αΆααααααα»αααααΌαααΆααααααααΆαα αΎαα’αΆα ααααΎα±ααααΆαααα α»αα α’αααα’αΆα ααααΎαα»αααΆααα·ααΈααααααααααΆα
- ααααΎα±ααααααα»ααααααααααΆααα½ααααα αΌαααααΆααΌααααα½ααα»αααααΌαααααααααααΆ
- ααΆααααα αα‘αΎααα·αααααααα ααααΆαααα½ααα»αααααΌααααα½ααα ααΆααααααααααααααααΆααΆα αααΎαα
- ααααααααααααααααΆαααα½ααα»αααααΌααα·αααααΉαααααΌα
ααΆααΆααΏαααααΆαααααα»αααΆαα αα αΆαα αααΆααα "ααΆααΆααΆααααααΎααααα»αααΆαααααΎα±ααααΆαααα α»ααα" α¬ "ααααα·αααΎα’ααααα·αααααΆαα αα»ααααααααΆα αα" α α§ααΆα ααα ααααα·αααΎααααΆααααααα’αααααΆααααα½ααα»αααααΌαααΈα αααααΆαα ααα’αΆα αααααΆα α αΎαα’αΆα αααα ααααΆααΈαααΆαα½αααΉαααΆαααααΆααααααΌααα·α αα½α αααα»αα ααααααΌαα’αα·αα·ααα ααΆααααα»ααααα ααααΈααααααααααα ααααΆααααααΆαα·ααΆαααΆα αααααΆαααααα·αααααα»αααΈαααΆαααΆααα ααΎα―αααΆαααΆα αααΎα αα·ααααααααΆαα’αΆαααααα αΆαααΆα ααα αααα»αααΌαα’αα·αα·ααα
ααΆαααααααααααααΌαα α ααΆαααα»ααα½ααααα
αα·ααΆαααΆααα SRP αα·αααααΌαααΆααααααα αααα OOP αα·α SOLID ααα ααΆα’αα»ααααα αααααα·ααΈααΆααααα αα»αααΆα ααααΆαα αααΌαα»α ααααΆααΈααααΌ αα·αααααΆααααα ααΆα’αα»ααααα ααααααΆαα’αα·ααααααααΆαα "figax-figax-and-prod" αα·α "rocket-science" αααααααΎα±αααα·αααααααΆαααααααααΎαα‘αΎααα αααααααΈααααααα ααααα·αααΎα’ααααα·αα’αααΈααΆ αααααααΎαααααΆαααααΆαααααααΉααααα·αααααααααΆααα’ααα αα·αααααααααααΆαα·α ααααααααααααααααα αα·ααααααααααααα»αααααααΆαααΆααα’ααααααΌαααΆααααααΎαα‘αΎαααΈαααΆαααΆαα» α αΎα "ααΆαααΆααααα" ααα αΌαα’ααααα ααΆααααΆααααααα "ααΆαααααααααα α½ααααααΆα" ααα αΌαα’ααααα ααΆααΈααααα·αααααΆα αα·αααααααααα·αααααΉαααααΌα ααα αΌαα ααα»αα αα·αααααα·ααΆαααα α·αααα
SRP αα·αααααΌαααΆααααααΎααααααααααΆαα·αα α αΎααααα·ααααααΆααααααααα·ααααΆααΆααααααα·αααααΆαααααα ααΆαααααα ααααΈααααααααααΈαααΆααααα αα·αααααΌαα α·αααααααααΎαα ααΆααααΆααααααΆαα·ααΈαα½αααΎααααΈααααααααα αα·αα’αα·αααααααααααααααα»αααααΆααααααααΎαα½αααααΆαααα»αααα ααΆααααααΆααααΎαααΈαααααααααααααααααα ααΌαααααααΎαααΆαααΆαα±ααααΆαααα·ααΆαααααΉαααααΌααα telepathy ααα»αααααααα»ααααααΉαααΆα’αααααααααααα’αΆαα’αααααααααααααααα
ααααα: www.habr.com