د دې اصل مفهوم د باربرا لیسکوف لخوا په 1987 کې د کنفرانس کلیدي وینا کې معرفي شو او وروسته په 1994 کې د جینیټ ونګ سره یوځای په یوه مقاله کې خپور شو. defiاصلي بڼه په لاندې ډول ده:
پرېږدئ چې Q (x) د T ډول T توکمونو باندې د توضیح وړ ملکیت شي. بیا Q (y) د S ډول S څیزونو لپاره چې د S ډول T ډول دی.
وروسته، د رابرټ سي مارټین د سولیډ اصولو په خپل کتاب کې د Agile سافټویر پراختیا، اصولو، نمونو، او طرزالعملونو په خپرولو سره او بیا په C# کې د Agile Principles, Patterns, and Practices کتاب په C# نسخه کې بیا خپور شو. defiدا د لیسکوف د بدیل اصول په توګه پیژندل شوی.
دا موږ ته راوړي defiد رابرټ سی مارتین لخوا ورکړل شوي معلومات: فرعي ډولونه باید د دوی د اساس ډولونو سره د بدلېدو وړ وي.
د ټولګی موټر {
فعالیت پیل ایجینین () {
// د ډیفالټ انجن پیل فعالیت
}
د فعالیت سرعت () {
// د ډیفالټ ګړندي فعالیت
}
}
د وسایط ټولګی ورکړل شوی - دا خلاص کیدی شي - او دوه پلي کول:
د ټولګي موټر د موټرو غځول {
فعالیت پیل ایجینین () {
$ this- >ंगेګنه ()؛
مور: :: startEngine ()؛
}
شخصي فعالیت بوختیا () {
// د احتراق پروسه
}
}
د ټولګی بریښنا بس د موټرو غزول {
د فعالیت سرعت () {
$ this-> وولټ ولټاژ ()؛
$ this-> نښلونکی انډیزونه ()؛
}
د خصوصي فعالیت وده ولټاژ () {
// بریښنایی منطق
}
شخصي فعالیت وصل
// د پیوستون منطق
}
}
د ټولګي چلونکی {
فنکشن و (ګاډي $ v) {
$ v-> startEngine ()؛
$ v-> ګړندی کول ()؛
}
}
کوم چې موږ ته د ټیمپلیټ میتود ډیزاین پا aې ساده پلي کولو ته راوړو لکه څنګه چې موږ دا په OCP کې کارولی.
تاسو ممکن د دوهم SOLID اصولو سره هم علاقه ولرئ: https: //bloginnovazione.en / خلاص-تړل شوی-دوهم-سخت-اصول / 3906 /
د خلاص / تړل شوي اصولو سره زموږ د پخوانۍ تجربې پراساس ، موږ کولی شو دې پایلې ته ورسیږو چې د لیسکوف بدیل اصول له OCP سره نږدې تړاو لري. په حقیقت کې ، "د LSP څخه سرغړونه د OCP یوه ناوړه سرغړونه ده" (رابرټ سی. مارتین) ، او د ټیمپټ میتود ډیزاین پیټرن د LSP د درناوي او پلي کولو کلاسیک مثال دی ، کوم چې په پایله کې د حل کولو یوه لاره هم ده چې اطاعت یې کوي. د OCP سره.
مستطیل ټولګي {
شخصي $ ټاپ لیفټ؛
شخصي
شخصي - قد
د عمومي فعالیت سیټ هوټ ($ قد) {
$ this-> قد = $ قد؛
}
د عامه فعالیت getHeight () {
بېرته $ this-> قد؛
}
د عمومي فعالیت سیټ چوکۍ ($ عرض) {
$ this-> عرض = $ عرض؛
}
عامه فعالیت getWidth () {
بېرته $ this-> عرض؛
}
}
راځئ چې د لومړني جیوماتیک شکل ، مستطیل سره پیل وکړو. دا د سور او قد لپاره سیټرو او ګیټرو سره یوازې د معلوماتو ساده شی دی. تصور وکړئ چې زموږ غوښتنلیک کار کوي او دمخه په څو مراجعینو کې ځای په ځای شوي. اوس دوی نوې ب needې ته اړتیا لري. دوی باید د دې وړتیا ولري چې مربعې اداره کړي.
په ریښتیني ژوند کې ، په جیوماتري کې ، مربع د مستطیل ځانګړی شکل دی. نو موږ کولی شو د مربع ټولګي پلي کولو هڅه وکړو چې د مستطیل ټولګی وغزوي. ډیری وختونه ویل کیږي چې د ماشوم ټولګی د مور او پلار ټولګی دی ، او دا څرګندونې LSP ته هم موافقه کوي ، لږترلږه په لومړي نظر کې.
ټولګي مربع مستطیل s
د عمومي فعالیت سیټ هوټ (ارزښت) {
$ this-> پلنو = $ ارزښت؛
$ this-> قد = $ ارزښت؛
}
د عمومي فعالیت سیټ چوکۍ ($ ارزښت) {
$ this-> پلنو = $ ارزښت؛
$ this-> قد = $ ارزښت؛
}
}
چوکۍ د مساوي عرض او لوړوالي سره مستطیل دی او موږ کولی شو د تیرو مثال په څیر عجیب پلي کول ترسره کړو. موږ کولی شو دواړه سیټونه پورته کړو او عرض دواړه تنظیم کړو. مګر دا به څنګه د پیرودونکي کوډ اغیزه وکړي؟
د ټولګي پیرودونکی {
د فعالیت ساحه تصدیقونکی (مستطیل $ r) {
$ r-> setWidth (5)؛
$ r-> سیټ هایت (4)؛
که ($ r-> سیمه ()! = 20)
نوی استثنا وغورځئ ('خرابه سیمه!')؛
}
سمه راستنه کړئ
}
}
د فعالیت ساحه () {
بېرته $ this-> عرض * $ this-> قد؛
}
موږ په څرګند ډول پورته میتود زموږ د مستطیل ټولګي ته اضافه کړ ترڅو ساحه چمتو کړو.
LspTest ټولګي د PHPUnit_Framework_TestCase پراخوي {
د فعالیت ازمونې ریکټانگلیا () {
$ r = نوی مستطیل ()؛
$ c = نوی پیرودونکی ()؛
$ this-> assertTrue ($ c-> AreaVerifier ($ r))؛
}
}
او موږ د ساحې چیکر ته د خالي مستطیل څیز په لیږلو سره یو ساده ازموینه رامینځته کړه او ازموینه پاس شوه. که زموږ ټولګي مربع وي defiپه سمه توګه ټاکل شوی، د مراجعینو ساحې ته یې لیږل باید د هغې فعالیت مات نه کړي. په هرصورت، مربع په هر ریاضياتي معنی کې یو مستطیل دی. مګر دا زموږ ټولګی دی؟
د فعالیت ټیسټ سټیریا () {
$ r = نوی چوکۍ ()؛
$ c = نوی پیرودونکی ()؛
$ this-> assertTrue ($ c-> AreaVerifier ($ r))؛
}
نو، زموږ د مربع طبقه د ټولو وروسته مستطیل نه دی. دا د جیومیټری قوانین ماتوي. دا ناکامیږي او د لیسکوف بدیل اصول سرغړونه کوي.
Ercole Palmeri
ګوګل ډیپ مائنډ د خپل مصنوعي استخباراتو ماډل یوه پرمختللې نسخه معرفي کوي. نوی پرمختللي ماډل نه یوازې چمتو کوي ...
لارویل، د خپل ښکلي نحو او ځواکمنو ځانګړتیاو لپاره مشهور، د ماډلر معمارۍ لپاره یو پیاوړی بنسټ هم چمتو کوي. هلته…
سیسکو او سپلنک د پیرودونکو سره مرسته کوي چې د راتلونکي امنیت عملیاتو مرکز (SOC) ته خپل سفر ګړندي کړي ...
Ransomware د تیرو دوه کلونو راهیسې په خبرونو تسلط لري. ډیری خلک ښه پوهیږي چې بریدونه ...
د ایپل ویژن پرو سوداګریز لیدونکي په کارولو سره د سترګو د سترګو عملیات په کاتانیا پولی کلینیک کې ترسره شوي ...
د رنګ کولو له لارې د موټرو ښه مهارتونو رامینځته کول ماشومان د نورو پیچلو مهارتونو لکه لیکلو لپاره چمتو کوي. رنګولو…
سمندري سکتور یو ریښتینی نړیوال اقتصادي ځواک دی ، کوم چې د 150 ملیارد بازار په لور حرکت کړی ...
تیره دوشنبه، فایننشل ټایمز د OpenAI سره یوه معامله اعلان کړه. FT د نړۍ په کچه ژورنالیزم جواز ورکوي ...