áá á á¨áááááľ áááᣠá¨áá á áááááľ ááá
á ááŁáá ááłááááŁ
aka á¨áŠáááá á°ááááááľ ááá
- ááá¨áłáľ á áŁá á¨ááŤáłáἠá°á áĽá á ááŽááŤáá áá áá áá
áá áĽáá°áá
áŤá á¨ááá áĽáŤáá˘
á¨áá ááá áá á¨ááááŞáŤ áľááá áŤá°á¨áŠáľ á á áá°áá á ááľ ááááŞáŤ áá á˛áá ááŁáśá˝ áĽá á á¨ááá´áá˝ á°ááŞáá˝á á¨áĽá ááááŁáľ áá° áŤáŤ á˛áá°áą - áĽááá°á á°ááŞáá˝á˘
á áŤáŤá ááľáĽ áĽáŤááłááłá¸á á¨8-9 á°áá˝ á áĄáľá á°á¨áááá ááľáľá á á°á¨áá - á¨áľáá áĄáľá á ááľ á áááľ áŽáľáŤ á ááĽááľ áá áŁá ᣠá¨áĄáľá ááľáĽ á¨ááááŞáŤá á°á áŽáľáŤá á ááľáłááľ ááľáĽ áŤáá°á° ᣠááá°áá á˘á ᣠᢠáĽá áśáľá°áá ááá°áľ á áá. áĽáŤáá áŤá áááá ááá áá° á¨áĄáľá áá¨á áá¨á¨áť ááááłááłá.
á¨áá¨áá áá á á¨áśáľáľ áĽááľ á¨ááá áľ áá᳠ᨠSRP áĽáŠ á á°ááŁá á áá áá˘
ááş 1. áá á áááááľ.
á¨áá á áááááľ ááá (SRP) áŚáá´áá ááş áĽáŤááłááą á áŤá á¨áŤáą áááááľ áĽá á¨áááá ááááŤáľ áĽááłáá ááááťá, áĽá á ááľ áááááľ áĽáť áá áŤáá.
âá áŞâ á¨áááá ááá áááľ ááľáĽ áŤáľáᥠ(á˛ááá).
ᨠSRP ááá
á ááá°áá á áááááśášá á áŚáľáľ áĽáá¨áááááĄ-
- á ááľ á ááľáˇá (PourOperation)
- á ááľ áá ἠ(á¨áá ἠá ááŚááŹá˝á)
- á ááľ á°á ááá°áľ á áá (TakeBiteOperation)
áĽáŤááłááą á¨áá°áą á°áłáłááá˝ ááá°áą á ááľ á áŤá áááľá á ááľ á áśáá áááááľ á ááŁá¸á - ááá áŁáľ, áááá°áľ ááá áááá°áľ.
á¨áá áŤá ááľááľ, á á°áŤá, ááĽááá áľáŤáá˝ á¨ááľ áá˝áł áá.
Ńlass Tippler {
//...
void Act(){
_pourOperation.Do() // наНиŃŃ
_drinkUpOperation.Do() // вŃпиŃŃ
_takeBiteOperation.Do() // СакŃŃиŃŃ
}
}
ááá?
á¨á°á ááŽááŤá á áľáŤáá ááááᎠá°á áŽáľ áá˝áá, áĽá á¨ááááŽá á°á ááľá¨áá˝, á°á°áĽ áĽá ááááá á á˝áŽá áá. áĽáą á á ááľ áá á¨3-7 áááľá ááŤá áĽá áá¨áłáľ áá˝ááá˘
á á°áŤáŤá áááł ááľáĽ, á¨áĽááá
áááľ ááľáĽ áŚáľáą á á. ááá áá áŽáąá á á ááľ áá
á¨áťááá áĽá
áᣠááá
ááᣠá áĽáá ááá˛áŤá á á°ááá¨á° ááá፠á¨áá˝ ááááŽá˝á ááááᢠáĽá áá
áá á á ááľ áá´ á áŤá ááľáĽ áááá. áĽááá á áá á á°ááŁáá
áĽáá°áá
á áááľ áŽáľ á áá°ááᢠááĽá-á áĽáᎠá áŁá á°áĽá á áá°á á áá°áá.
á áá á áŠá á¨ááááŽá á°á á ááá ááą ááľáĽ áŤááľá á¨áááą ááá áááá˝á áááľáá°á á¨á°áá°á ááᢠá á áááŽá ááľáĽ, á ááľ áá ááááľ, á á˛áľ áĽááá˝á á¨ááą áá°áĽá°áĽ áĽá á á°ááłáłá ááááľ áá áłá°á áá˝áá. á ááľ á¨áľáŽ áá´á ááŞá á áľáĄáľá˘ á ááá áááá ááľáĽ, á áŠá ááááľ, á¨á áŠá ááá¨áŤ áááłáľ áĽá áĽá፠ááľáĽ á¨áááśá áááť áá´áá˝á áá¨áľ áá˝áá, á ááľáĄá ááá˝ áááŤá. ááá áá áááá á¨áá˝áá áááá˝ á á ááľ áá áá¨áľ á áá˝áá, á á ááľ "áááá" ááľáĽ. á˘áŤááľ "á¨áŚáŁ á°á" á áá˝áá.
áľááá , á¨á°á ááŽááŤá á áľáŤááá˝ ááľáĽáľáĽ áľááśá˝á áá° ááľáĽáľáĽ áĽá á ááľá°á á¨áľáŤ áááá˝ áľáĽáľáĽ áŤá ááťá. ááá áĽáá á á°ááŤá¨ ááááľ áá áľá áľ ááťáá: á áĽá á áŽá ááŞáá˝ ááľáĽ á¨á á¨á ááľá°ááá፠áąáŚ áá° á á ááľáĽ áááŁá, áĽá á áááá ááŞáá˝ ááľáĽ, á á¤áááľáŽáááľ áááá፠ááľáĽ áŤáá áĽáá˝áľ áá°áŠá á¨áááá áá¨áá¨áá, áá á á áĽáá áá áľ á˝áá ááá áá˝áá.
á áá, SRP áĽáá´áľ áĽáá°áá á°áĽáľ áááľá á¨áááŤáŤ ááľááá á¨áľ áĽáá°ááłá á¨ááŤáĽáŤáŤ ááá ááá˘.
á "áááááľ" áááá ááá áá°á¨áľ áá áľá áľ áĽáá°ááŤáľááá ááááŤá, áááľá á á ááłááľ áááŽá˝ á°ááŁáŤáľ áá°á¨áľ.
áá° áá ἠáĽááááľ áĽá á¨ááááŽá á°á á áá áľá áľ áá á¨ááŤááá¸áá áĽá áá˝:
- áŽáą á á¨á°á¨áá áĽá á á áŁá ááá áááá˘
- áŽáą á á ááľ áá á á ááŤáł ááŽááŤááŽá˝ ááá áá˝áá (áĽáŤááłááą á¨á°áᨠá áŤá áá˝áá)
- á ááśáá˛á áá¨áŤ ááá ááá - ááĽá¨ ááአááá áŁá áá á áááá°á˝ ááá ááá˘
- á¨áŽáą áĽáá á ááłáŤá - áá°áŤáľ áá˝áá á¨áá ἠá ááŚááŹá˝á á ááľ á°áŤáŤá á á á¨á´áá áľá ááłá˝ áá°ááŤááľá áľ ááś áĽáá. ááá á¨ááá°áľ áľáŤáá ááá áĽá áá ááá áŽáľáŤ áĽá á˘áŤ á áááááá áľ ááś áĽáá ááááŠáľ. á áááľ ááľáááśá˝ áá á áááľá¨áľ, á¨áľááľ áŽáľá áłááአáááá ááá ááľá¨á áá˝áá á˛ááá á á.
- á¨áĽááá ááááá˝ ááłáááľá (áĽáť á áá áá) áá á áá˝áá TakeBitOperation, á ááŽá (áĽáť á áá áá á¨áá ἠá ááŚááŹá˝á á ááĽáł á¨á áááą) áĽá ááá˝ áĽá á¨áááľ ááľáááśá˝á áŤáá.
(áŚá ᣠáá á áľááľá á¨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 á ááľ, PourLogger After и PourErrorLogger.
áĽá ááá ἠáśáľáľ áŚááŹá˝áá˝ áĽááłá á ááľáłááľ, áá á á¨áá áľáá ááľ á¤áśá˝á áĽááááá. á áá¤áąá, á á ááá á¨áá ἠáá ἠ14 (!!!) áááá˝á áŤáŤáľáłá.
áááááŚá? á ááá ! á¨áááᎠá°á áá áľá áľ áŤáá áľ á¨áĽá áŚáἠ"ááá°áťáá" á á˛áŤáá°á, á ááľáłááľ, á ááá°áľ áŚááŹá°áŽá˝, á¨áá á á ááŚáľ á áááááľ, á¨áááŞááá˝ áááľ á áŤáá áá´á, áĽá áááŁáŠ áŠáĽ áá áĽááá˝á áŤáááá á˝áá ááááłáľ ááááŤá. ááá á áá á°ááááŽá˝. áĽá áĽááá, áĽáą á áááá.
áĽááá˝ SRP á¨áŽá ááááľáłáľ á°á¨áľ áá¸á áá°áá áá°áá°á፠á¨á°á¨áąáľ áĽá ááľá áááŤááľ áááłáá˘
áľá Srp áŚáľá°áá ááş ááá ááźá áłááá áĄ-
âáá á á¨áááááľ ááá áĽáá˛á áááᢠá¨ááἠáá á°ááłáłá á¨áá áááŽá˝ á á ááľ áŚáł áááἠá ááŁá¸á". ááá "á ááľ áá á¨áááᥠáááŽá˝ á á ááľ áŚáł áááἠá ááŁá¸á"
áááľá á¨á ááľá áŚááŹá˝á áááἠááľáłááť á¨áá¨áá á á ááľ áŚáł ááá¨á á ááĽáá˘
áá á áŁá á áľááá ááĽáĽ áá - á¨áá áŤááľ ááá ᨠSRP ááĽáŤáŞáŤáá˝ á áááŠá áľ áá ááááśá˝á ááá¨áľ á áľááá áľááá ᨠᣠáááľá á áĽáá áá á áá âá¨ááááá áá°áĽâ ááľá áá ᣠáĽá á áá áĽá¨á°ááááá áŤááá áľá "áá á°á áá°áĽ" áá. á áá áá, SRP "á áá¨ááá áá áá¨ááá " áĽáť áłááá á¨áá á á áá ááááá°áľá ááá - "á¨á°á ááá áááŽá˝á á áľááŠ". áá á áŚáŤá ááá áĽá á áááᎠá°á ááŤá¨á áŤáá áłáá áŚáááľ áá!
á áá á áŞá á¨á°áťá áľááľ áá°áá áááŁá. ᨠIPourLogger áááá á áśáľáľ áááá˝ áá¨ááá á áŤáľáááá á¨áááľ á á°á¨á᪠áááá áááá áá° á ááľ á áááľ ááŁáá áĽáá˝ááá.
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 ááľááŽá˝ á°ááłáłá áááľ áŤáá ᨠGOD áá´ áłá¨á˘
- áá° 1C áááą áĽá áá፠ááá áŠ
- á áá áá፠áá° á¨áá፠ááá áááą áĽá áĽá፠ááá áŠáľá˘
- áĽáá°áá áŤá áá፠áŤáá áá፠á ááá á áááá áá áĽááłáá°áá ᨠáŤá¨áááĄ
- á á˛áľ áá፠áá á
- á áá፠ááá ááľáĽ á¨áááᣠáá¤áśá˝á áĽá ᨠ1c ááĽáá áá° á¨áááᣠáá¤áśá˝ á áááááľ áá¨ááŠ
- áá°áá á áá á¨áĽ á¨áá፠áá¨á áŤáá
- á ááĽáĽ á áááááľ ááľáĽ ááá á°áá á á¨ááĽáĽ ááĽá ááá áŠá˘ á¨áĽááľáá 1c áá፠ááĽá áá°áá á áááááľ áŤáľá°áááá˘
áĽá á áá áááá ááľáĽ á¨á áľá᪠áááááľ áá áá° 10 á¨áá á á°á¨á᪠á¨áááľ áľáŤáá˝ áá áŠá˘ ááá á°á áááľ ááťáá á¨áááŤá ááá áŤáľáááááᢠá¨áĽáŞááš ááá˝ ááľáĽ á¨ááĽáĽ ááłáááŤá áĽá á¨á°áá á áľá áŤáľááááá˘
á¨á ááľ á°á áľ ááťáťáŤ á áá á¨áá á¨á° áááľ á°ááŚášá áĽá á ááłááľ á¨áá፠áá á¨ááľáŤáľá áአáአáá´áá˝/áááá˝ ááá¨áľ á˝áááᢠá¨áĽááá áĽáá áá´ ááá á áľáááłá, ááá áá áááłáłáľ á¨ááááá 100 á¨áŽáľ ááľááŽá˝ ááá°áá.
á¨áĽááľ áááľ á áá á¨áá "ááá ááĽá°áľ" áá´ ááá ááá á¨áááľ áĽáŤ áľáá° ááá áĽáá°áá ááá˝ áá. áĽá á¨á´áááŤá ááááŽá˝ á¨ááááŞáŤ ááá፠á áŁá á¨á°ááłá°á áá áᢠáĽá SRP á¨ááĽá°á áá áá áá´ áá° áááĽáŤáŽá˝ ááá¨ááá áá¨áŤ áá, áĽá á á°ááŤáá á áá°áá.
áááááá.
á°áŤáŤáá˝áá áĽáťá˝áá á¨ááá°áá áľ áá ááᢠáĽááŁáá áŤáľáá - á áĽááá áááľ á ááľ áá áá° áĽáą áĽááááłáá. á áá á¨áá á˝áá áĽáááąá áá°á á áĽááľááá.
áááááá 1. ᨠSRP ááş
- áĽáŤááłááłá¸á áá ááľ ááá á°á áŤá áĽáá˛áá ááĽá¨ áááŽášá áááŤáŠ.
- áááááľ áááľ "ááááἠááááŤáľ" áááľ áá. áŤá áááľ áĽáŤááłááą á áŤá áááἠá ááľ ááááŤáľ áĽáť á áá, á¨áááľ ááá á ááťá.
- á áááľ áĽáŤ á áááᎠáá ááá á¨áá˝á áááŚá˝á˘ á áŤáŁá˘áŤá ááá á áá áľ. á á°ááłáłá áá á¨áááᥠááĽá¨ áááŽá˝ á á á áŤá˘áŤ ááá á ááŁá¸áá˘
áááááá 2. á áľááá á¨áŤáľ-áá¨áŤ ááľáááśá˝.
SRP á áááááľ á á áááááá˝á á áá¨ááᢠáá á áľááá áááłáá˝ á á-
1) áá
ááá / áá´ / ááąá / á áááááľ áá áĽáá°áá°áŤ áĽáŤáľáá áá áá. á ááá áľááá ááááľ á ááĽá
ᢠ( á áá°áááá
ááĽáŤáŞáŤáá˝
ááá, á ááłááľ áá ááá áľááá ááááľ á áŁá á áľá¸á᪠áá
2) áľá á°áľá ááľá°áŤá¨á ááá á á˛áľ áŁá ᪠áá¨á á áľááš á¨ááá/á¨ááá áĽááľ áá á°á˝áá áŤáłáľáŤáᢠá ááłáĽ á°á¨á - á ááľ.
ááĽáŤáŞáŤáá˝
áááááľ (áá ááľ áŁá ᪠ááá áľá á°áľ) á á ááľ ááá/ááá ááľáĽ á¨áłá¸á áľáááᣠá¨áľ áĽáá°ááłá áĽá áá áĽáá°ááľá°áŤá¨á á áľááá áŤáááᢠáááłáᥠá¨áááἠááľáłááť áľáŤáá˝á áá¤áľ á¨ááá¨á áŁá ᪠á¨áááἠááľáłááťáá áĽáť ááá¨á áŤáľáááááᢠá á°áá¨á áŽáľ ááľáĽ ááá á áŤáľáááá.
ááá ááłá á¨ááłáááš áá á°ááłáłá á¨áá á á˛áľ á¨áŠá á áááŁá áŞáŤ áá¨á ááᢠáá 10 á¨á°ááŤáŠ á áŤááľá áĽá 15 á¨á°ááŤáŠ áááŽá˝á ááá¨áá á¨ááŤáľááľáľ á¨áá, á¨áá á á áá áĽá¨á°áŠáľ áááľáá.
3) áĽá ááá˘áá˝ á á°ááŤáŠ á¨ááŽáááľá áá áłáá˝ áá áĽá¨á°áŠ á¨ááᣠá¨áá á°áľ áááľáŁ áááľáᣠá°ááłáłá ááá/ááá á á°ááłáłá áá á áĽá ááá˘áá˝ á¨ááá¨á áĽáľá á ááľá°á ááá˘
ááĽáŤáŞáŤáá˝
á á˛áľ ááś áĽáá âá¨á á¨á´áá á áłá˝ áŽáľáŤá á ááľáąâ á¨áá ᣠá ááá ᣠá áá áŁáľ áĽá á ááá°áľ áĽáŤ áá á°á˝áá ááłá°á áŤáľáááááłá ᣠá¨á፠áááááśáš á áľááá á¨á°á¨ááá áááľááᢠá áĽááἠáá áááá á¨ááťá á áá°áá, ááá áá áá á á áá áááááľ ááá¨á á ááĽá.
4) áľá áááľ áĽáŤ á áááᎠ(á¨ááᢠááá áĽáŤ á áľáŞáŤá ) ááá˝ á¨áá áĽáŤá á˛á á¨á áá° á ááľ ááá / ááá ááĽá°á áá¨áá á¨á፠áĽáť ááá áá.
ááĽáŤáŞáŤáá˝
áŁá áŞáŤáľáŁá áá˝ ááá áľáá° áááŽá˝ á¨áłáááŁáĽáŤááłááłá¸á á á ááľ áŚáł áá á¨á°áááľáŁáĽá á áŽáą áŚáł áá á áŁáá˛áŤ á áá°á á°ááá˘
5) áľáŤáá ááá˝ áá.
ááĽáŤáŞáŤáá˝
á¨áĽá ááá ááá áá´ áá ááľ ááá á°á áŤá áá, áĽá áááááą á áľá ááľáĽ ááá¸áŁá¨áá
AllManagersManagerService - ááááŁáľ á¨áĽááá áĽáá ááá ááá˘
á¨á áŤáŁá˘ áá፠- ááááŁáľ áááá áá˝ááá˘
áááááá 3. áŚáŤá-á¨ááááŞáŤá á¨áĽáľááľ áá´.
á ááľá ááááŞáŤ áá á¨ááááŽá á°á á áŤáá á áĽá ááá á¨á˝áአáĽáá á áááŽá˝ áĽáá°á°ááą á áá°áá¸áá áĽá áľá á°áľ áá አáá˝áá. á á°ááŤáŠ ááááśá˝ áľá á°áśá˝á ááľá¨á áá˝áá-
- á¨á°ááŤáŠ áááááśá˝á á ááááľ áááá˝á á áŁá áľáá áŤáľáááľ
- á ááľá áááááľ áá° áĽá á¨á°ááŤáŠ ááááśá˝ á áá¨ááá áĽáá°áá áááá
- á¨áááááľ áľáá áŽá˝á á áľááá ááááš
á°ááĄá ááľáłááľ á áľááá áá: "áľáá áľá á°áľ ááĽáŤáą á¨á°áťá áá," ááá "áĽááá á áŤááá, á áá¨ááááľ." áááłáᣠáááá áááľ áááááśá˝á á¨áŤáᣠá ááá ááá¨áłáľ á¨ááťá áá áĽá á á°áá áá áŽáľ áá á áľááš áááŚá˝ ááááľ áá¨áá áá˝ááᢠá ááľ á á ááŤáł áááá˝ áá á áá°áŤá¨áą áĽá á á°áá áá áŽáľ ááľáĽ á áľááá áĽááá˝ áŁáááአááááŤáľ áĽáááá á¨ááľáłááľ ááľáłááľ áá°áĽá°áĽ áĽááá áá á áŁá á¨áŁáľ ááá˘
á ááľ áá áááĽáŤáľ ááá á áá áá
ᨠSRP áá°á á OOP áĽá SOLID áĽáť á¨á°áá°á á áá°ááᢠáĽáą áá´áá˝á ᣠá°ááŁáŽá˝á ᣠáááὠᣠáááá˝á ᣠáááᎠá áááááśá˝á áĽá á áááááśá˝á áááá¨áłáᢠááááąá "figax-figax-and-prod" áĽá "áŽáŹáľ-áłáááľ" áĽáľááľá áááá¨áłá, áá á áááá á ááá áŚáł áľáá˝ á¨á°áťá áŤá°áááá. áľááĽáą áŤá°áĄ, áá áááľ ááťáá á¨ááá áá ááľáľá áá°á¨áłá ááá áá. á¨ááŤááŤá áá ááľáľáᣠá¨ááĽáĽá áľáááśá˝ áĽá ááá ááľáĽáľáĽ áľáááśá˝ á¨á°áááĄáľ á¨ááááš ááᣠáĽá âáá áłá°áâ á˛ááááŽá˝á á¨áá°áŁá á á˝ááłá áŤáłáŁá¸ááᣠâá¨áá á á áá áááŤá¨áĽâ á˛ááááŽá˝á á ááĽáá áŤáłáŁá¸ááᣠáĽá á¨á°áłáłáą áľáá áŽá˝ ááááŤáłá áĽá á¨á áĽáᎠá°áá áŤáłáŁá¸ááá˘
SRP á á°ááĽáŽ áŤáá°ááá°á áĽá á¨áľáááá áłáááľ á áŤá á áá°áá. á¨áĽá á áááłá áĽá áľá ááŚáá ááąáááśá˝ áááŁáá˘á¨ááááŽ-á°áá á ááá á áá áá ááľáĽáľáĽ áľáááśá˝á ááááŁá á áĽá áááłá á áĽáť ááᢠáľáááľá áĽáá´áľ áá áľá áľ áĽááłááĽá áááá¨áá. á¨ááááŞáŤá á áťáťá ááľáá á¨áá á¨á´ááᲠáá á áŤáľáááááᣠááá áá áá ááŁáĽá á ááłááľ á¨ááľ áááŤáá áŤá¸áłá áĽáŹ á°áľá á á°ááááá˘
ááá: hab.com