O le manatu o lenei mataupu faavae na folasia e Barbara Liskov i se autu o le konafesi i le 1987 ma mulimuli ane lomia i se pepa faatasi ma Jannette Wing i le 1994. defiuluai tion e faapea:
Tuʻu le q (x) o se meatotino faʻaalia i luga o mea faitino x o le ituaiga T. Ona tatau lea ona faʻaalia le q (y) mo mea faitino o le ituaiga S o le S o se subtype o le T.
Mulimuli ane, faatasi ai ma le lomiaina o mataupu faavae SOLID a Robert C. Martin i lana tusi Agile Software Development, Principles, Patterns, and Practices ona toe lomia lea i le C# version o le tusi Agile Principles, Patterns, and Practices in C#, le defina lauiloa o le Liskov substitution principle.
O lenei mea e aumaia ai i tatou i le defifaamatalaga na tuuina mai e Robert C. Martin: Subtypes tatau ona suia ma a latou faʻavae tulaga.
Taavale vasega {
galuega amata startEngine () {
// Leai masini amata amata galuega
}
galue faʻatelevave () {
// Lefaʻagafuaina o galuega
}
}
Tuuina atu o le Taavale vasega - e mafai ona avea ma auiliiliga - ma lua faʻatinoina:
vasega taʻavale faʻalauteleina Taavale {
galuega amata startEngine () {
$ this-> auaiIgnition ();
matua :: startEngine ();
}
galuega tumaoti faʻaaofiaIgnition () {
// Faiga ole sulu
}
}
vasega ElectricBus faʻalauteleina Taavale {
galue faʻatelevave () {
$ lenei-> faateleinaVoltage ();
$ lenei-> fesoʻotaʻiItasi Taʻitoʻatasi ();
}
galuega tumaoti faʻaopoopoVoltage () {
// Faʻamatalaga uila
}
galuega tumaoti fesootaiIndividualEngines () {
// Mafaufauga fesoʻotaʻi
}
}
vasega Avetaʻavale {
alu alu (Taavale $ v) {
$ v-> startEngine ();
$ v-> faʻavave ();
}
}
Lea e aumaia ai i tatou i se faigofie faʻatinoina o le Mamanu Metotia Fuafua Mamanu pei ona matou faʻaaogaina i le OCP.
Atonu e te fiafia foi i le mataupu faavae lona lua SOLID: https: //bloginnovazione.en / tatala-tapuni-lua-maua-mataupu faavae / 3906 /
Faʻavae i luga o matou poto masani muamua ma le Tatala / Tapunia mataupu faʻavae, e mafai ona matou faʻamaeʻaina o le Liskov suia mataupu faʻavae e vavalalata ma le OCP. O le mea moni, "o le solia o le LSP o se latent solia o le OCP" (Robert C. Martin), ma le Faʻataʻitaʻiga Metotia mamanu Mamanu o se masani faʻataʻitaʻiga o le faʻaaloalo ma le faʻatinoina o le LSP, ma i se tasi itu o tali e tatau foi ona tausisia ma le OCP.
vasega Tafatafaʻilagi {
tumaoti $ topLeft;
tumaoti $ lautele;
tumaoti $ maualuga;
gaioiga lautele setHeight ($ maualuga) {
$ lenei-> maualuga = $ maualuga;
}
gaioiga lautele getHeight () {
toe faafoi $ lenei-> maualuga;
}
lautele galuega setWidth ($ lautele) {
$ lenei-> lautele = $ lautele;
}
galuega a le lautele getWidth () {
toe faafoi $ lenei-> lautele;
}
}
Tatou amata i se foliga masani geometric foliga, o se tafatolu. Ua naʻo se faigofie faʻamatalaga mea ma setters ma getters mo lautele ma maualuga. Vaʻai faalemafaufau o la matou tusi talosaga e galue ma ua uma ona tufatufaina atu luga o tele tagata o tausia. Nei latou te manaʻomia se foliga fou. E tatau ona mafai ona latou faʻataʻitaʻia sikuea.
I le olaga moni, i le geometry, o le sikuea o se faʻapitoa foliga o se tafatafa. Ma e mafai ona tatou taumafai e faʻatino se vasega Lotoa e faʻalauteleina se vasega tafaʻilagi. E masani ona fai mai o le tamaititi vasega o se matua vasega, ma o lenei faʻamatalaga e tusa foi ma LSP, a itiiti mai i le taimi muamua tepa.
vasega Lotoa faʻalautele faatafafa {
lautele faʻatulagaina setHeight ($ taua) {
$ lenei-> lautele = $ tau;
$ lenei-> maualuga = $ tau;
}
lautele galuega setWidth ($ taua) {
$ lenei-> lautele = $ tau;
$ lenei-> maualuga = $ tau;
}
}
O le sikuea o le sikuea ma tutusa lautele ma maualuga ma e mafai ona tatou faia se eseʻese faʻatinoina pei o le muamua faʻataʻitaʻiga. E mafai ona matou lafoaʻi setters uma e seti uma maualuga ma lautele. Ae faʻapefea ona aʻafia ai le code client?
vasega kalani {
aoga eriaVerifier (Tafaʻilagi $ r) {
$ a-> seti lautele (5);
$ ----------------> seti Maualuga (4);
afai ($ ----------------> vaega ()! = 20) {
togi ese Tuusaunoa ('Eria leaga!');
}
toe foi mai moni;
}
}
vaega galue () {
faʻafoʻi $ lenei-> lautele * $ lenei-> maualuga;
}
Na matou mautinoa na faʻaopopo le auala i luga atu i le matou vasega tafaʻilagi e avatua le eria.
vasega LspTest faʻalauteleina PHPUnit_Framework_TestCase {
galuega faatino testRectangleArea () {
$ r = fou Tafatolu ();
$ c = Tagata fou ();
$ this-> assertTrue ($ c-> areaVerifier ($ r));
}
}
Ma na matou faia se su'ega faigofie e ala i le lafoina o se mea fa'atafa'afa'afa avanoa i le su'ega o le eria ma pasi le su'ega. Afai o le matou vasega Square o defifa'auma sa'o, lafo i le Client's areaVerifier() e le tatau ona motusia ana galuega. A uma mea uma, o le sikuea ose rectangle i so'o se uiga fa'a-matematika. Ae o la tatou vasega ea?
galuega faatino suʻegaSquareArea () {
$ r = Lotoa fou ();
$ c = Tagata fou ();
$ this-> assertTrue ($ c-> areaVerifier ($ r));
}
O lea la, o le matou vasega Square e le o se Rectangle. E soli tulafono o geometry. Ua le manuia ma soli le mataupu faavae sui Liskov.
Ercole Palmeri
Coveware e Veeam o le a faʻaauau pea ona tuʻuina atu auaunaga faʻalavelave faʻalavelave faʻafuaseʻi. Coveware o le a ofoina atu faʻamatalaga faʻafomaʻi ma faʻaleleia gafatia ...
O le tausiga fa'anatinati o lo'o fa'afouina ai le vaega o le suau'u ma le kesi, fa'atasi ai ma se faiga fou ma le fa'agaoioia ile pulega o la'au.…
Ua tuʻuina atu e le UK CMA se lapataiga e uiga i amioga a Big Tech i le maketi atamai faʻapitoa. O iina…
O le "Green Houses" Decree, na faia e le Iuni a Europa e faʻaleleia ai le malosi o fale, ua maeʻa lana faiga faʻatulafonoina ma ...