Artikoli

Kedu ihe bụ ụkpụrụ imewe: gịnị kpatara eji ha, nhazi ọkwa, uru na ọghọm

N'ime injinịa sọftụwia, ụkpụrụ imewe bụ ihe ngwọta kachasị mma maka nsogbu ndị na-emekarị na nhazi ngwanrọ.

Ha dị ka ọrụ mbụdefinite, nwale na ngwaọrụ ndị ị nwere ike hazie iji dozie nsogbu imewe ugboro ugboro na koodu gị.

Oge agụpụtara echere: 6 minuti

Kedu ihe bụ ụkpụrụ imewe

Ụkpụrụ imewe abụghị koodu nke anyị nwere ike idetuo ma tinye n'ime mmemme anyị, dịka anyị nwere ike iji ọrụ ọkọlọtọ ma ọ bụ ọba akwụkwọ mee. Ụkpụrụ imewe bụ echiche izugbe nwere ike idozi otu nsogbu. N'ụzọ bụ isi ihe nlereanya nke nkọwa ya anyị nwere ike ịgbaso ma mejuputa ngwọta nke dabara na eziokwu nke mmemme anyị.

Ụdị na-enwekarị mgbagwoju anya na algọridim, n'ihi na echiche abụọ ahụ na-akọwa ihe ngwọta nke nsogbu ụfọdụ mara. Mgbe algorithm defiỌ bụrụ na enwere usoro omume doro anya mgbe niile nke nwere ike imezu ebumnuche ụfọdụ, ihe nlereanya bụ nkọwa ọkwa dị elu nke ngwọta. Koodu sitere na otu ụdị etinyere na mmemme abụọ dị iche iche nwere ike ịdị iche.

N'ịchọ ịme ihe atụ, anyị nwere ike iche maka uzommeputa isi nri: ha abụọ nwere usoro doro anya iji nweta ihe mgbaru ọsọ. Otú ọ dị, ihe nlereanya dị ka ọrụ, nke ị nwere ike ịhụ ihe ga-esi na ya pụta na njirimara ya, ma kpọmkwem usoro nke mmejuputa iwu na-adabere na anyị bụ ndị na-ede koodu.

Kedu ihe e ji emepụta ụkpụrụ imewe?

A na-akọwa ọtụtụ ụkpụrụ ka ndị mmadụ nwee ike imepụtaghachi ha n'ọtụtụ ebe. Ka anyị hụ n'okpuru ihe ndị dị na nkọwa nke ihe nlereanya:

  • Ebumnuche nke ihe nlereanya na-akọwa nkenke ma nsogbu na ngwọta.
  • Mkpali akọwakwuo nsogbu ahụ na ngwọta nke ihe nlereanya ahụ na-eme ka o kwe omume.
  • Nhazi nke klaasị na-egosi akụkụ nke ọ bụla nke ihe nlereanya na otú ha si metụta.
  • Ihe atụ koodu n'otu n'ime asụsụ mmemme kachasị ewu ewu na-eme ka ọ dịkwuo mfe ịghọta echiche dị n'azụ ihe nlereanya ahụ.

Gịnị mere eji ha?

Onye mmemme nwere ike ịmepụta ngwanrọ na-amaghị ịdị adị nke ụkpụrụ imewe. Ọtụtụ na-eme ya, n'ihi nke a, ha na-eme atụmatụ ụfọdụ n'amaghị ama. Ma gịnịzi mere anyị ga-eji na-ewepụta oge mụọ ha?

  • Ụkpụrụ imewe bụ ngwa nke a nwalere na-anwale ngwọta na nsogbu ndị a na-ahụkarị na nhazi ngwanrọ. Ọbụlagodi na ị hụtụbeghị nsogbu ndị a, ịmara usoro ka bara uru n'ihi na ọ na-akụziri gị otu esi edozi ụdị nsogbu niile site na iji ụkpụrụ imewe dabere na ihe.
  • Ụdị imewe defiHa na-emepụta asụsụ nkịtị nke gị na ndị otu gị nwere ike iji na-ekwurịta okwu nke ọma. Ị nwere ike ịsị, "Oh, naanị jiri Singleton mee nke a," onye ọ bụla ga-aghọta echiche dị n'azụ aro gị. Ọ dịghị mkpa ịkọwa ihe singleton bụ ma ọ bụrụ na ị maara ụkpụrụ na aha ya.

Nhazi nke ụkpụrụ imewe

Ụkpụrụ imewe dị iche na mgbagwoju anya, ọkwa nke nkọwa, na ọnụ ọgụgụ nke itinye n'ọrụ n'ime usoro a haziri.

Site na ntụnyere, anyị nwere ike ime ka ụzọ nrutu dị nchebe site n'ịwụnye ọkụ okporo ụzọ ole na ole ma ọ bụ wulite mgbanwe mgbanwe dị iche iche na ụzọ n'okpuru ala maka ndị na-agafe agafe.

A na-akpọkarị ụdị nke kachasị, nke dị ala akpaalaokwu . Ha na-emetụtakarị naanị otu asụsụ mmemme.

Ụdị kachasị nke ụwa na nke dị elu bụ ụkpụrụ ụlọ . Ndị nrụpụta nwere ike mejuputa ụkpụrụ ndị a n'asụsụ ọ bụla. N'adịghị ka usoro ndị ọzọ, enwere ike iji ha chepụta ihe owuwu nke ngwa niile.

Ọzọkwa, enwere ike kewaa ụdị niile dịka ha si dị ebumnobi ma ọ bụ nzube. Klas atọ bụ isi bụ:

Akwụkwọ akụkọ ọhụrụ
Agbagharala akụkọ kacha mkpa maka ime ọhụrụ. Debanye aha iji nweta ha site na email.
  • Ụdị okike ha na-enye usoro okike ihe na-abawanye mgbanwe na iji koodu dị adị.
  • Ụdị ihe owuwu ha na-akọwa otu esi achịkọta ihe na klaasị n'ime nnukwu ụlọ, na-eme ka ihe owuwu ndị a na-agbanwe agbanwe na nke ọma.
  • Ụdị omume ha na-emeso nkwurịta okwu dị irè na ọrụ nke ọrụ n'etiti ihe.

Ọmụmaatụ nke ụkpụrụ imewe na Laravel: Facade

Iche ihu bụ ụkpụrụ nhazi nhazi nke na-enye interface dị mfe maka ụlọ akwụkwọ, ihe nhazi, ma ọ bụ klaasị ọ bụla dị mgbagwoju anya.

nsogbu

Ka anyị chee na anyị kwesịrị ime ka sọftụwia rụọ ọrụ, dabere n'ọtụtụ ihe dị n'ọbá akwụkwọ ma ọ bụ usoro ọkaibe. Dị ka ọ na-adịkarị, anyị ga-achọ ibido ihe ndị a niile, debe ihe ndabere, mee usoro n'usoro ziri ezi, na ihe ndị ọzọ.

N'ihi ya, echiche azụmahịa nke klaasị ga-ejikọta ya na nkọwa mmejuputa iwu nke klaasị ndị ọzọ, na-eme ka ha sie ike nghọta na jikwaa.

Ngwọta

una facade bụ klaasị nke na-enye interface dị mfe maka sistemu dị mgbagwoju anya nke nwere ọtụtụ akụkụ na-akpụ akpụ. A facade nwere ike inye obere ọrụ ma e jiri ya tụnyere ịrụ ọrụ ozugbo na sistemụ subsystem. Agbanyeghị, ọ gụnyere naanị njirimara ndị ahịa na-eche n'ezie.

Nwere otu facade ọ bara uru mgbe anyị kwesịrị ijikọ ngwa ahụ na ọbá akwụkwọ ọkaibe nke nwere ọtụtụ atụmatụ, mana anyị chọrọ naanị obere akụkụ nke ọrụ ya.

Dịka ọmụmaatụ, ngwa na-ebugo obere vidiyo na-akpa ọchị nwere nwamba na mgbasa ozi ọha nwere ike iji ọbá akwụkwọ ntụgharị vidiyo ọkachamara. Agbanyeghị, naanị ihe anyị chọrọ bụ klas nwere otu usoro encode(filename, format). Mgbe ịmepụtara klas dị otú ahụ ma jikọta ya na ọbá akwụkwọ ntụgharị vidiyo, anyị ga-enwe nke mbụ anyị facade.

Dịka ọmụmaatụ, onye na-ahụ maka ekwentị nke ebe oku dị ka a facade. N'ezie, mgbe anyị kpọrọ ọrụ ekwentị ụlọ ahịa iji nye iwu ekwentị, onye ọrụ bụ nke anyị facade kwupụta ọrụ na ngalaba niile nke ụlọ ahịa ahụ. Onye na-arụ ọrụ na-enye ụda olu dị mfe maka usoro nhazi, ọnụ ụzọ ịkwụ ụgwọ na ọrụ nnyefe dị iche iche.

Ezi ihe atụ na PHP

Chee echiche banyere Iche ihu dị ka a mfe nkwụnye maka ụfọdụ mgbagwoju subsystems. Facade na-ekewapụta mgbagwoju anya n'ime otu klaasị ma na-enye ohere ka koodu ngwa ndị ọzọ jiri interface dị mfe.

N'ihe atụ a, Facade na-ezochi mgbagwoju anya nke YouTube API na FFmpeg ọba akwụkwọ site na koodu ndị ahịa. Kama ịrụ ọrụ na ọtụtụ klaasị, onye ahịa na-eji usoro dị mfe na 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

Akwụkwọ akụkọ ọhụrụ
Agbagharala akụkọ kacha mkpa maka ime ọhụrụ. Debanye aha iji nweta ha site na email.

Ihe odide ndị a

Veeam nwere nkwado zuru oke maka ransomware, site na nchedo ruo nzaghachi na mgbake

Coveware nke Veeam ga-aga n'ihu na-enye ọrụ nzaghachi ihe omume cyber. Coveware ga-enye forensics na ike mmezi…

23 April 2024

Mgbanwe Green na Dijitalụ: Otu amụma amụma si agbanwe ụlọ ọrụ mmanụ & gas

Ndozi amụma na-agbanwe mpaghara mmanụ & gas, na-enwe usoro ọhụrụ na ngwa ngwa maka njikwa ihe ọkụkụ.…

22 April 2024

Onye na-ahụ maka mgbochi ntụkwasị obi UK na-ewelite mkpu BigTech na GenAI

UK CMA enyela ịdọ aka ná ntị gbasara omume Big Tech na ahịa ọgụgụ isi. Ebe ahụ…

18 April 2024

Casa Green: mgbanwe ike maka ọdịnihu na-adigide na Italy

Iwu “Case Green”, nke European Union chepụtara iji kwalite nrụpụta ike nke ụlọ, ejirila…

18 April 2024