Izihloko

Ayini amaphethini wokuklama: kungani uwasebenzise, ​​ukuhlukaniswa, okuhle nokubi

Kubunjiniyela besoftware, amaphethini wokuklama ayizixazululo ezilungile zezinkinga ezivame ukwenzeka ekwakhiweni kwesoftware.

Zifana namaphrojekthi angaphambilidefinite, amathuluzi ahloliwe nahloliwe ongawenza ngendlela oyifisayo ukuxazulula inkinga yokuklama ephindelelayo kukhodi yakho.

Isikhathi sokufunda esilinganiselwe: 6 imizuzu

Iyini Iphethini Yokuklama

Iphethini yokuklama akuyona ikhodi esingayikopisha futhi siyifake ohlelweni lwethu, njengoba singenza ngemisebenzi evamile noma amalabhulali. Iphethini yokuklama ingumqondo ojwayelekile okwazi ukuxazulula inkinga ethile. Ngokuyisisekelo imodeli esingakwazi ukuyilandela imininingwane yayo futhi sisebenzise isisombululo esifanelana neqiniso lohlelo lwethu.

Amamodeli avame ukudideka nama-algorithms, ngoba yomibili imiqondo ichaza izixazululo ezijwayelekile zezinkinga ezithile ezaziwayo. Ngenkathi i-algorithm defiUma kukhona njalo isethi ecacile yezenzo ezingafinyelela umgomo othile, imodeli incazelo yezinga eliphezulu yesisombululo. Ikhodi evela kumodeli efanayo esetshenziswa ezinhlelweni ezimbili ezahlukene ingase yehluke.

Sifuna ukwenza isifaniso, singacabanga ngeresiphi yokupheka: bobabili banezinyathelo ezicacile zokufeza umgomo. Kodwa-ke, imodeli ifana nephrojekthi, ongabona ngayo ukuthi yini umphumela nezici zayo, kodwa ukuhleleka okuqondile kokuqaliswa kuncike kithi esibhala ikhodi.

Yenziwe ngani i-Design Pattern?

Amaphethini amaningi achazwa ngokusemthethweni kakhulu ukuze abantu bakwazi ukuwakhiqiza ezimeni eziningi. Ake sibone ngezansi ama-elementi akhona encazelweni yemodeli:

  • Inhloso imodeli ichaza kafushane kokubili inkinga nesixazululo.
  • Isisusa iphinde ichaze inkinga kanye nesixazululo imodeli eyenza kwenzeke.
  • Isakhiwo Amakilasi akhombisa ingxenye ngayinye yemodeli nokuthi ihlobene kanjani.
  • Isibonelo sekhodi ngolunye lwezilimi zokuhlela ezidume kakhulu kwenza kube lula ukuqonda umbono ongemuva kwemodeli.

Kungani uwasebenzise?

Umklami angathuthukisa isofthiwe ngaphandle kokwazi ukuba khona kwamaphethini okuklama. Abaningi bayakwenza, futhi ngenxa yalesi sizathu benza ezinye izinhlelo bengazi. Kodwa kungani-ke kufanele sichithe isikhathi siwafunda?

  • Amaphethini okuklama ayikhithi ye izixazululo zazama futhi zahlolwa ezinkingeni ezijwayelekile ekwakhiweni kwesoftware. Ngisho noma ungakaze uhlangabezane nalezi zinkinga, ukwazi amaphethini kusewusizo ngoba kukufundisa indlela yokuxazulula zonke izinhlobo zezinkinga usebenzisa izimiso zokuklama ezigxile entweni.
  • Amamodeli wokuklama defiBakha ulimi oluvamile wena nethimba lakho eningalusebenzisa ukuze nixhumane ngokuphumelelayo. Ungase uthi, “O, vele usebenzise i-Singleton ukuze wenze lokhu,” futhi wonke umuntu uzowuqonda umbono wesiphakamiso sakho. Asikho isidingo sokuchaza ukuthi iyini i-singleton uma ulazi iphethini negama layo.

Ukuhlukaniswa kwamaphethini Womklamo

Amaphethini wedizayini ayahluka ngobunkimbinkimbi, izinga lemininingwane, kanye nesikali sokusebenza kulo lonke uhlelo oluklanyiwe.

Ngesifaniso, singenza impambanondlela iphephe kakhudlwana ngokufaka amarobhothi ambalwa noma ukwakha impambana-ndlela yamaleveli amaningi namaphasishi angaphansi kwabahamba ngezinyawo.

Amamodeli ayisisekelo kakhulu, asezingeni eliphansi avame ukubizwa izisho . Ngokuvamile zisebenza olimini lokuhlela olulodwa kuphela.

Amamodeli asezingeni eliphakeme kakhulu kanye nezinga eliphezulu amamodeli wezakhiwo . Onjiniyela bangasebenzisa lawa maphethini cishe kunoma yiluphi ulimi. Ngokungafani namanye amaphethini, angasetshenziswa ukuklama izakhiwo zohlelo lonke lokusebenza.

Ngaphezu kwalokho, wonke amamodeli angahlukaniswa ngokusho kwawo izamile noma inhloso. Amakilasi amathathu amakhulu yilawa:

Innovation newsletter
Ungaphuthelwa yizindaba ezibaluleke kakhulu zokuqamba. Bhalisa ukuze uthole nge-imeyili.
  • Amamodeli okudala bahlinzeka ngezindlela zokudala izinto ezikhulisa ukuguquguquka nokusetshenziswa kabusha kwekhodi ekhona.
  • Amamodeli wesakhiwo bachaza indlela yokuhlanganisa izinto namakilasi abe yizakhiwo ezinkulu, ukugcina lezi zakhiwo ziguquguquka futhi zisebenza kahle.
  • Amamodeli okuziphatha babhekana nokuxhumana okusebenzayo kanye nokwabelwa kwezibopho phakathi kwezinto.

Isibonelo Sephethini Yomklamo ku-Laravel: I-Facade

I-facade iyiphethini yedizayini yesakhiwo enikeza isixhumi esibonakalayo esenziwe lula kumtapo wolwazi, uhlaka, nanoma iyiphi enye isethi eyinkimbinkimbi yamakilasi.

inkinga

Ake sicabange ukuthi sidinga ukwenza isofthiwe isebenze, ngokusekelwe kusethi enkulu yezinto ezingezamtapo wolwazi noma uhlaka oluyinkimbinkimbi. Ngokuvamile, kuzodingeka siqalise zonke lezi zinto, silandelele ukuncika, senze izindlela ngokulandelana okufanele, njalonjalo.

Ngenxa yalokho, ingqondo yebhizinisi yamakilasi izohlanganiswa ngokuqinile nemininingwane yokusetshenziswa yamakilasi ezinkampani zangaphandle, okuwenza kube nzima ukuwaqonda nokuphatha.

Isixazululo

Una facade iyikilasi elinikeza isixhumi esibonakalayo esilula kusistimu engaphansi eyinkimbinkimbi equkethe izingxenye eziningi ezihambayo. A facade ingase inikeze ukusebenza okulinganiselwe uma kuqhathaniswa nokusebenza ngokuqondile nesistimu engaphansi. Nokho, ihlanganisa kuphela izici amakhasimende azikhathalela ngempela.

Yiba neyodwa facade iwusizo uma sidinga ukuhlanganisa uhlelo lokusebenza nomtapo wolwazi osezingeni eliphezulu onezici eziningi, kodwa sidinga ingxenye encane kuphela yokusebenza kwayo.

Isibonelo, uhlelo lokusebenza olulayisha amavidiyo amafushane ahlekisayo namakati kunkundla yezokuxhumana lungase lusebenzise ilabhulali yokuguqula ividiyo ephrofeshinali. Nokho, esikudingayo ngempela ikilasi elinendlela eyodwa encode(filename, format). Ngemva kokudala ikilasi elinjalo nokulixhuma kulabhulali yokuguqula ividiyo, sizoba nelethu lokuqala facade.

Isibonelo, osebenza ngocingo wesikhungo sezingcingo ufana ne- facade. Eqinisweni, lapho sishayela isevisi yocingo yesitolo ukuze sifake i-oda locingo, osebenza ngocingo ungowethu facade kuzo zonke izinsiza kanye neminyango yesitolo. I-opharetha inikeza isikhombimsebenzisi esilula sezwi ohlelweni loku-oda, amasango okukhokha kanye nezinsizakalo ezihlukahlukene zokulethwa.

Isibonelo sangempela ku-PHP

Cabanga ngayo I-facade njenge-adaptha elula yamanye amasistimu angaphansi ayinkimbinkimbi. Facade ihlukanisa ubunkimbinkimbi ngaphakathi kwekilasi elilodwa futhi ivumela enye ikhodi yohlelo lokusebenza ukuthi isebenzise isixhumi esibonakalayo esilula.

Kulesi sibonelo, Facade ifihla ubunkimbinkimbi be-YouTube API kanye nelabhulali ye-FFmpeg kukhodi yeklayenti. Esikhundleni sokusebenza nenqwaba yamakilasi, iklayenti lisebenzisa indlela elula ku-Facade.

<?php

namespace RefactoringGuru\Facade\RealWorld;

/**
 * The Facade provides a single method for downloading videos from YouTube. This
 * method hides all the complexity of the PHP network layer, YouTube API and the
 * video conversion library (FFmpeg).
 */
class YouTubeDownloader
{
    protected $youtube;
    protected $ffmpeg;

    /**
     * It is handy when the Facade can manage the lifecycle of the subsystem it
     * uses.
     */
    public function __construct(string $youtubeApiKey)
    {
        $this->youtube = new YouTube($youtubeApiKey);
        $this->ffmpeg = new FFMpeg();
    }

    /**
     * The Facade provides a simple method for downloading video and encoding it
     * to a target format (for the sake of simplicity, the real-world code is
     * commented-out).
     */
    public function downloadVideo(string $url): void
    {
        echo "Fetching video metadata from youtube...\n";
        // $title = $this->youtube->fetchVideo($url)->getTitle();
        echo "Saving video file to a temporary file...\n";
        // $this->youtube->saveAs($url, "video.mpg");

        echo "Processing source video...\n";
        // $video = $this->ffmpeg->open('video.mpg');
        echo "Normalizing and resizing the video to smaller dimensions...\n";
        // $video
        //     ->filters()
        //     ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
        //     ->synchronize();
        echo "Capturing preview image...\n";
        // $video
        //     ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
        //     ->save($title . 'frame.jpg');
        echo "Saving video in target formats...\n";
        // $video
        //     ->save(new FFMpeg\Format\Video\X264(), $title . '.mp4')
        //     ->save(new FFMpeg\Format\Video\WMV(), $title . '.wmv')
        //     ->save(new FFMpeg\Format\Video\WebM(), $title . '.webm');
        echo "Done!\n";
    }
}

/**
 * The YouTube API subsystem.
 */
class YouTube
{
    public function fetchVideo(): string { /* ... */ }

    public function saveAs(string $path): void { /* ... */ }

    // ...more methods and classes...
}

/**
 * The FFmpeg subsystem (a complex video/audio conversion library).
 */
class FFMpeg
{
    public static function create(): FFMpeg { /* ... */ }

    public function open(string $video): void { /* ... */ }

    // ...more methods and classes... RU: ...дополнительные методы и классы...
}

class FFMpegVideo
{
    public function filters(): self { /* ... */ }

    public function resize(): self { /* ... */ }

    public function synchronize(): self { /* ... */ }

    public function frame(): self { /* ... */ }

    public function save(string $path): self { /* ... */ }

    // ...more methods and classes... RU: ...дополнительные методы и классы...
}


/**
 * The client code does not depend on any subsystem's classes. Any changes
 * inside the subsystem's code won't affect the client code. You will only need
 * to update the Facade.
 */
function clientCode(YouTubeDownloader $facade)
{
    // ...

    $facade->downloadVideo("https://www.youtube.com/watch?v=QH2-TGUlwu4");

    // ...
}

$facade = new YouTubeDownloader("APIKEY-XXXXXXXXX");
clientCode($facade);

Ercole Palmeri

Innovation newsletter
Ungaphuthelwa yizindaba ezibaluleke kakhulu zokuqamba. Bhalisa ukuze uthole nge-imeyili.

Izihloko zakamuva

I-Veeam ifaka ukusekelwa okuphelele kakhulu kwe-ransomware, kusukela ekuvikelweni kuya ekuphenduleni nasekululameni

I-Coveware ye-Veeam izoqhubeka nokuhlinzeka ngezinsizakalo zokuphendula izigameko zokuntshontshwa kwe-inthanethi. I-Coveware izohlinzeka ngama-forensics kanye nekhono lokulungisa…

23 April 2024

Inguquko Eluhlaza Nedijithali: Indlela Ukugcinwa Okubikezelwayo Kuyiguqula Kanjani Imboni Kawoyela Negesi

Ukulungiswa okuqagelayo kuguqula umkhakha kawoyela negesi, ngendlela emisha nesebenzayo yokuphatha izitshalo.…

22 April 2024

Isilawuli se-antitrust sase-UK siphakamisa i-alamu ye-BigTech nge-GenAI

I-CMA yase-UK ikhiphe isexwayiso mayelana nokuziphatha kwe-Big Tech emakethe yezobunhloli bokwenziwa. Lapho…

18 April 2024

I-Casa Green: inguquko yamandla yekusasa elisimeme e-Italy

Isinqumo esithi "Case Green", esakhiwe yi-European Union ukuze kuthuthukiswe ukusebenza kahle kwamandla ezakhiwo, siphothule inqubo yaso yomthetho ngokuthi...

18 April 2024