Middle
Интерфейсиндеги ыкмаларды кайсы принципке ылайык топтоо жана бөлүү жүргүзүлөт?
sobes.tech AI
AIден жооп
Интерфейс ичиндеги ыкмалар бириктирилип, бөлүнөт жеке ишенимдүүлүк (cohesion) жана ачык контракттык принцибине ылайык.
- Ишенимдүүлүк: Бирдиктүү операциялар топтомун түзгөн ыкмалар, же окшош мааниге ээ аракеттерди аткарган ыкмалар бир интерфейске биригет. Бул коддун окумдуулугун жакшыртат, интерфейсдин максатын түшүнүүнү жеңилдетет жана кайра колдонулушун жогорулатат.
- Ачык контракт: Интерфейс аткаруучу класстар аткарышы керек болгон ачык контрактты сүрөттөйт. Интерфейстеги ар бир ыкма бул контракттын бир бөлүгү. Ыкмалар ар башка интерфейстерге бөлүнөт, эгер алар ар башка иш-аракеттерди көрсөтсө же алардын ишке ашуусу көз карандысыз болушу мүмкүн. Мисалы,
Readableинтерфейси маалыматтарды окуу ыкмаларын камтышы мүмкүн, ал эмиWritable— жазуу үчүн. Класс бул эки интерфейсти да ишке ашыра алат, өз мүмкүнчүлүктөрүнө жараша.
Бул ыкма SOLID принциптерине, өзгөчө:
- Бир гана жоопкерчилик принциби (Single Responsibility Principle): Интерфейс өзгөрүүгө бир гана себеп болот — ал сүрөттөгөн иш-аракеттердин топтомунун өзгөрүшү.
- Интерфейс бөлүү принциби (Interface Segregation Principle): Кардарлар колдонбогон интерфейстерден көз каранды болбошу керек. Интерфейстерди кичинекей жана фокусталган бөлүктөргө бөлүү классга керектүү интерфейстерди гана ишке ашырууга мүмкүндүк берет.
Мисал:
Бизде сакталуучу жана жүктөлүүчү объект бар деп элестетели. Бир Persistable интерфейси менен save() жана load() ыкмаларынын ордуна, эки отделдүү интерфейс түзүү жакшы:
<?php
// Сакталуучу объекттер үчүн интерфейс
interface Savable
{
public function save(): void;
}
<?php
// Жүктөөчү объекттер үчүн интерфейс
interface Loadable
{
public function load(): void;
}
Эки интерфейсти да ишке ашыратын класс:
<?php
// Эки интерфейсти да ишке ашыган класс
class DataObject implements Savable, Loadable
{
public function save(): void
{
// Сактоо логикасы
}
public function load(): void
{
// Жүктөө логикасы
}
}
Тек сакталуучу класс гана Savable интерфейсин ишке ашырат:
<?php
// Тек сакталуучу класс
class TempData implements Savable
{
public function save(): void
{
// Уақыттык маалыматтарды сактоо логикасы
}
}
Бул ыкма класс жана алардын көзкарандылыгын ийкемдүү долбоорлоого мүмкүндүк берет.