amanqaku

Zithini iipateni zoyilo: kutheni uzisebenzise, ​​ulwahlulo, okuhle kunye nokubi

Kubunjineli besoftware, iipateni zoyilo zizisombululo ezifanelekileyo kwiingxaki eziqhele ukwenzeka kuyilo lwesoftware.

Zifana neeprojekthi zangaphambilidefinite, zizanyiwe kwaye zivavanyiwe izixhobo onokuthi uzenze ngokwezifiso ukusombulula ingxaki yoyilo oluphindaphindiweyo kwikhowudi yakho.

Ixesha lokufunda eliqikelelweyo: 6 imizuzu

Yintoni iPhatheni yoYilo

Ipatheni yoyilo ayiyokhowudi esinokuyikopa kwaye siyifake kwinkqubo yethu, njengoko sinokwenza ngemisebenzi eqhelekileyo okanye amathala eencwadi. Ipatheni yoyilo yingcamango jikelele ekwaziyo ukusombulula ingxaki ethile. Ngokusisiseko imodeli esinokuthi siyilandele kwaye siphumeze isisombululo esihambelana nobunyani benkqubo yethu.

Iimodeli zihlala zibhidaniswa kunye ne-algorithms, kuba zombini iikhonsepthi zichaza izisombululo eziqhelekileyo kwiingxaki ezithile ezaziwayo. Ngoxa i-algorithm defiUkuba kukho rhoqo isethi ecacileyo yezenzo ezinokuthi zifezekise injongo ethile, imodeli inkcazo yezinga eliphezulu lesisombululo. Ikhowudi esuka kwimodeli efanayo esetyenziswa kwiinkqubo ezimbini ezahlukeneyo inokwahluka.

Ukufuna ukwenza isifaniso, sinokucinga ngeresiphi yokupheka: zombini zinamanyathelo acacileyo okuphumeza injongo. Nangona kunjalo, imodeli ifana neprojekthi, apho unokubona ukuba yintoni umphumo kunye neempawu zayo, kodwa umyalelo ochanekileyo wokuphunyezwa kuxhomekeke kuthi thina esibhala ikhowudi.

Yenziwe ngantoni iPatheni yoYilo?

Iipateni ezininzi zichazwa ngokusesikweni kakhulu ukuze abantu bakwazi ukuzivelisa kwakhona kwiimeko ezininzi. Makhe sibone ngezantsi izinto ezikhoyo kwinkcazo yemodeli:

  • Injongo yomzekelo ichaza ngokufutshane zombini ingxaki kunye nesisombululo.
  • Inkuthazo ichaza ngakumbi ingxaki kunye nesisombululo ukuba imodeli yenza ukuba kwenzeke.
  • Ulwakhiwo yeeklasi ibonisa inxalenye nganye yemodeli kunye nendlela ezinxulumene ngayo.
  • Umzekelo wekhowudi kolunye lwezona lwimi zidumileyo zokucwangcisa zenza kube lula ukuqonda umbono osemva kwemodeli.

Kutheni uzisebenzise?

Umdwelisi wenkqubo unokuphuhlisa isoftware ngaphandle kokwazi ubukho beepateni zoyilo. Abaninzi bayakwenza oko, kwaye ngenxa yesi sizathu baphumeza ezinye izicwangciso bengazi. Kodwa ke kutheni sifanele sichithe ixesha sizifunda?

  • Iipateni zoyilo ziyikhithi ye zizanyiwe kwaye zavavanywa izisombululo kwiingxaki eziqhelekileyo kuyilo lwesoftware. Nokuba awukhe udibane nezi ngxaki, ukwazi iipateni kuseluncedo kuba kukufundisa indlela yokusombulula zonke iintlobo zeengxaki usebenzisa imigaqo yoyilo ejolise kwinto.
  • Iimodeli zoyilo defiBenza ulwimi oluqhelekileyo onokuthi wena kunye neqela lakho nisebenzise ukunxibelelana ngokufanelekileyo. Unokuthi, "Owu, sebenzisa nje iSingleton ukwenza oku," kwaye wonke umntu uya kuwuqonda umbono ongemva kwengcebiso yakho. Akukho mfuneko yokuchaza ukuba yintoni i-singleton ukuba uyayazi ipateni kunye negama layo.

Ukuhlelwa kweePatheni zoYilo

Iipateni zoyilo ziyahluka ngokuntsokotha, inqanaba leenkcukacha, kunye nobungakanani bokusebenziseka kuyo yonke inkqubo eyiliweyo.

Ngomzekeliso, singenza ukudibana kweendlela kukhuseleke ngokufakela iirobhothi ezimbalwa okanye ukwakha utshintshiselwano olupheleleyo lwemigangatho emininzi kunye neendlela ezingaphantsi komhlaba zabahambi ngeenyawo.

Iimodeli ezisisiseko, ezisezantsi zihlala zibizwa izaci . Ngokuqhelekileyo zisebenza kuphela kulwimi olulodwa lokucwangcisa.

Iimodeli zendalo yonke kunye neziphezulu iimodeli zokwakha . Abaphuhlisi banokusebenzisa ezi pateni phantse kulo naluphi na ulwimi. Ngokungafaniyo nezinye iipateni, zingasetyenziselwa ukuyila uyilo lwesicelo sonke.

Ngapha koko, zonke iimodeli zinokuhlelwa ngokwazo Ndizamile okanye injongo. Iiklasi ezintathu eziphambili zezi:

Ileta yeendaba entsha
Ungaphoswa zezona ndaba zibalulekileyo kutshintsho. Bhalisa ukuze uzifumane nge-imeyile.
  • Iimodeli zokudala babonelela ngeendlela zokudala izinto ezandisa ukuguquguquka kunye nokusetyenziswa kwakhona kwekhowudi ekhoyo.
  • Imifuziselo yolwakhiwo bachaza indlela yokudibanisa izinto kunye neeklasi kwizakhiwo ezinkulu, ukugcina ezi zakhiwo ziguquguqukayo kwaye zisebenza kakuhle.
  • Iimodeli zokuziphatha bajongana nonxibelelwano olusebenzayo kunye nokwabiwa koxanduva phakathi kwezinto.

Umzekelo wePatheni yoYilo kwiLaravel: iFacade

I-facade yipatheni yoyilo lwesakhiwo ebonelela ngojongano olulula kwithala leencwadi, isakhelo, okanye nayiphi na iseti entsonkothileyo yeeklasi.

inkinga

Masicinge ukuba kufuneka senze isoftware isebenze, ngokusekelwe kwiseti enkulu yezinto zethala leencwadi eliphucukileyo okanye isakhelo. Ngokuqhelekileyo, kuya kufuneka siqalise zonke ezi zinto, sigcine umkhondo wokuxhomekeka, ukwenza iindlela ngendlela echanekileyo, njalo njalo.

Ngenxa yoko, ingqiqo yeshishini leeklasi iya kudityaniswa ngokuqinileyo kwiinkcukacha zokuphunyezwa kweeklasi zomntu wesithathu, nto leyo eyenza kube nzima ukuyiqonda nokulawula.

Isisombululo

Omnye facade ludidi olunikeza ujongano olulula kwindlela esezantsi entsonkothileyo equlathe iindawo ezininzi ezihambayo. A facade inokubonelela ngokusebenza okulinganiselweyo xa kuthelekiswa nokusebenza ngokuthe ngqo nenkqubo engaphantsi. Nangona kunjalo, ibandakanya kuphela iimpawu abathengi abazikhathalele ngokwenene.

Yiba nenye facade iluncedo xa sifuna ukudibanisa i-app kunye nethala leencwadi eliphucukileyo elinezinto ezininzi, kodwa sifuna kuphela indawo encinci yokusebenza kwayo.

Umzekelo, i-app elayisha iividiyo ezimfutshane ezihlekisayo ezineekati kwimidiya yoluntu inokusebenzisa ithala leencwadi lokuguqula ividiyo. Nangona kunjalo, konke esikufunayo ngokwenene yiklasi enendlela enye encode(filename, format). Emva kokudala iklasi enjalo kwaye uyidibanise kwilayibrari yokuguqula ividiyo, siya kuba neyokuqala facade.

Umzekelo, umsebenzisi wefowuni kwiziko lemibuzo ufana ne- facade. Enyanisweni, xa sibiza inkonzo yefowuni yevenkile ukuze ifake iodolo yefowuni, umntu osebenza kuyo ngowethu facade kuzo zonke iinkonzo kunye namasebe evenkile. Umsebenzisi unikeza i-interface yezwi elula kwinkqubo yoku-odola, amasango okuhlawula kunye neenkonzo ezahlukeneyo zokuhambisa.

Umzekelo wokwenyani kwi-PHP

Cinga nge I-facade njengeadaptha elula yezinye ezisezantsi ezintsonkothileyo. Facade yahlula ukuntsonkotha kwiklasi enye kwaye ivumela enye ikhowudi yesicelo ukuba isebenzise ujongano olulula.

Kulo mzekelo, Facade ifihla ubunzima be-YouTube API kunye nelayibrari yeFFmpeg kwikhowudi yomxhasi. Esikhundleni sokusebenza kunye neeklasi ezininzi, umxhasi usebenzisa indlela elula kwi-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

Ileta yeendaba entsha
Ungaphoswa zezona ndaba zibalulekileyo kutshintsho. Bhalisa ukuze uzifumane nge-imeyile.

Amanqaku amva

I-Veeam ibonakalisa eyona nkxaso ibanzi ye-ransomware, ukusuka ekukhuselweni ukuya ekuphenduleni nasekubuyiseni

I-Coveware nguVeeam iya kuqhubeka nokubonelela ngeenkonzo zokuphendula ngeziganeko zokuxhwilwa kwe-cyber. I-Coveware iya kubonelela nge-forensics kunye nezakhono zokulungisa…

23 Aprili 2024

Uguquko oluLuhlaza kunye neDijithali: Njani uLondolozo oluCwangcisiweyo oluTshintsho kwishishini le-oyile negesi

Ugcino oluqikelelweyo luguqula icandelo le-oyile negesi, ngenkqubo entsha nesebenzayo kulawulo lwemizi-mveliso.…

22 Aprili 2024

Umlawuli we-antitrust wase-UK uphakamisa i-alam ye-BigTech ngaphezulu kwe-GenAI

I-CMA yase-UK ikhuphe isilumkiso malunga nokuziphatha kweBig Tech kwimarike yobukrelekrele bokwenziwa. Pha…

18 Aprili 2024

ICasa Green: inguqu yamandla kwikamva elizinzileyo e-Itali

Umthetho we "Green Houses", oqulunqwe yiManyano yaseYurophu ukomeleza amandla ombane kwizakhiwo, ugqibezele inkqubo yowiso mthetho nge…

18 Aprili 2024