Articles

He aha nā hiʻohiʻona hoʻolālā: no ke aha e hoʻohana ai iā lākou, ka hoʻokaʻawale ʻana, nā pono a me nā pōʻino

Ma ka ʻenekinia lako polokalamu, ʻo nā ʻōnaehana hoʻolālā ka hopena maikaʻi loa i nā pilikia i loaʻa maʻamau i ka hoʻolālā polokalamu.

Ua like lākou me nā papahana muadefinite, ho'āʻo a ho'āʻo i nā mea hana hiki iā ʻoe ke hoʻopilikino e hoʻoponopono i kahi pilikia hoʻolālā hou i kāu code.

Manaʻo manawa heluhelu: 6 minuke

He aha ke kumu hoʻolālā

ʻAʻole code hoʻolālā kahi hiki iā mākou ke kope a hoʻokomo i kā mākou papahana, e like me kā mākou e hana ai me nā hana maʻamau a i ʻole nā ​​hale waihona puke. ʻO ke kumu hoʻolālā he manaʻo maʻamau e hiki ke hoʻoponopono i kahi pilikia. ʻO ke kumu hoʻohālike e hiki ai iā mākou ke hahai a hoʻokō i kahi hopena i kūpono i ka ʻoiaʻiʻo o kā mākou papahana.

Hoʻopili pinepine ʻia nā hiʻohiʻona me nā algorithms, no ka mea, wehewehe nā manaʻo ʻelua i nā hoʻonā maʻamau i kekahi mau pilikia i ʻike ʻia. ʻOiai he algorithm defiInā loaʻa mau kahi ʻano hana e hiki ai ke hoʻokō i kekahi pahuhopu, ʻo ke kumu hoʻohālike he wehewehe kiʻekiʻe o ka hopena. He ʻokoʻa paha ke code mai ka hoʻohālike like i hoʻohana ʻia i ʻelua papahana like ʻole.

Ke makemake nei mākou e hana i kahi hoʻohālikelike, hiki iā mākou ke noʻonoʻo i kahi meaʻai kuke: loaʻa iā lāua nā ʻanuʻu maopopo e hoʻokō i kahi pahuhopu. Eia nō naʻe, ʻoi aku ke ʻano o kahi hiʻohiʻona e like me kahi papahana, kahi āu e ʻike ai i ke ʻano o ka hopena a me kāna mau hiʻohiʻona, akā ʻo ke ʻano pololei o ka hoʻokō e pili ana iā mākou e kākau i ke code.

He aha ke ʻano o ka hoʻolālā ʻana?

Hōʻike ʻia ka hapa nui o nā mamana i hiki i nā kānaka ke hana hou iā lākou ma nā ʻano he nui. E ʻike kākou ma lalo o nā mea i loaʻa i ka wehewehe ʻana o kahi kŘkohu:

  • ʻO ka manaʻo o ke kŘkohu wehewehe pokole i ka pilikia a me ka hooponopono.
  • ʻO ka hoʻoikaika wehewehe hou aʻe i ka pilikia a me ka hoʻonā i hana ʻia e ke kumu hoʻohālike.
  • Auana o nā papa e hōʻike ana i kēlā me kēia ʻāpana o ke kŘkohu a pehea e pili ai.
  • ʻO ka laʻana code i kekahi o nā ʻōlelo papahana kaulana loa e maʻalahi ka hoʻomaopopo ʻana i ka manaʻo ma hope o ke kumu hoʻohālike.

No ke aha e hoʻohana ai iā lākou?

Hiki i ka mea papahana ke hoʻomohala i nā polokalamu me ka ʻike ʻole i ke ola ʻana o nā ʻano hoʻolālā. Nui ka poʻe e hana, a no kēia kumu ke hoʻokō nei lākou i kekahi mau papahana me ka ʻike ʻole. Akā, no ke aha mākou e hoʻolimalima manawa e aʻo ai iā lākou?

  • ʻO nā hiʻohiʻona hoʻolālā he pahu o i ho'āʻo a hoʻāʻo ʻia i nā pilikia maʻamau i ka hoʻolālā polokalamu. ʻOiai inā ʻaʻole ʻoe e hālāwai me kēia mau pilikia, pono mau ka ʻike ʻana i nā mamana no ka mea e aʻo iā ʻoe pehea e hoʻoponopono ai i nā ʻano pilikia āpau me ka hoʻohana ʻana i nā kumu hoʻolālā hoʻolālā.
  • ʻO nā hiʻohiʻona hoʻolālā defiHoʻokumu lākou i ka ʻōlelo maʻamau e hiki ai iā ʻoe a me kāu hui ke kamaʻilio maikaʻi. Hiki iā ʻoe ke ʻōlelo, "ʻAe, e hoʻohana wale i kahi Singleton e hana i kēia," a e hoʻomaopopo nā mea a pau i ka manaʻo ma hope o kāu manaʻo. ʻAʻohe pono e wehewehe i ke ʻano o ka singleton inā ʻike ʻoe i ke kumu a me kona inoa.

Hoʻokaʻawale i nā ʻano hoʻolālā

ʻOkoʻa nā ʻano hoʻolālā i ka paʻakikī, ka pae kikoʻī, a me ka nui o ka hoʻohana ʻana ma ka ʻōnaehana i hoʻolālā ʻia.

Ma ka hoʻohālikelike, hiki iā mākou ke hana i kahi alahele me ka palekana ma o ka hoʻokomo ʻana i kekahi mau kukui kaʻaahi a i ʻole ke kūkulu ʻana i kahi kikowaena multilevel holoʻokoʻa me nā alahele lalo no ka poʻe hele wāwae.

ʻO nā kumu hoʻohālike nui, haʻahaʻa haʻahaʻa i kapa pinepine ʻia idioms . Hoʻohana pinepine lākou i hoʻokahi ʻōlelo papahana.

ʻO nā hiʻohiʻona nui loa a me ke kūlana kiʻekiʻe hale hoʻohālike . Hiki i nā mea hoʻomohala ke hoʻokō i kēia mau hiʻohiʻona ma nā ʻōlelo a pau. ʻAʻole like me nā hiʻohiʻona ʻē aʻe, hiki ke hoʻohana ʻia e hoʻolālā i ka hoʻolālā o kahi noi holoʻokoʻa.

Eia kekahi, hiki ke hoʻokaʻawale ʻia nā hiʻohiʻona āpau e like me kā lākou ua hoʻāʻo a i ʻole ke kumu. ʻO nā papa nui ʻekolu:

Nupepa hou
Mai poina i ka nūhou nui loa e pili ana i ka hana hou. E kākau inoa e loaʻa iā lākou ma ka leka uila.
  • Nā kumu hoʻohālike Hāʻawi lākou i nā mea hana hana e hoʻonui ai i ka maʻalahi a me ka hoʻohana hou ʻana i nā code i loaʻa.
  • Nā kumu hoʻohālike wehewehe lākou pehea e hōʻuluʻulu ai i nā mea a me nā papa i loko o nā hale nui, e mālama ana i kēia mau hale i maʻalahi a maikaʻi.
  • Nā kumu hoʻohālike pili lākou i ka kamaʻilio kūpono a me ka hāʻawi ʻana i nā kuleana ma waena o nā mea.

Ka Laʻana o ka Hoʻohālike Hoʻolālā ma Laravel: Facade

Nahenahe He kumu hoʻolālā hoʻolālā e hāʻawi ana i kahi kikowaena maʻalahi i kahi waihona, framework, a i ʻole nā ​​papa hana paʻakikī ʻē aʻe.

ʻO ka pilikia

E noʻonoʻo mākou pono mākou e hana i nā lako polokalamu, e pili ana i kahi pūʻulu nui o nā mea i pili i kahi waihona a i ʻole ka hoʻolālā. ʻO ka mea maʻamau, pono mākou e hoʻomaka i kēia mau mea āpau, e mālama i nā hilinaʻi, e hoʻokō i nā ʻano hana ma ke ʻano kūpono, a pēlā aku.

ʻO ka hopena, e hoʻopili paʻa ʻia ka loiloi ʻoihana o nā papa me nā kikoʻī hoʻokō o nā papa ʻaoʻao ʻekolu, e paʻakikī iā lākou ke hoʻomaopopo a mālama.

Pāʻoihana

Una facade He papa ia e hāʻawi ana i kahi kikowaena maʻalahi i kahi subsystem paʻakikī i loaʻa nā ʻāpana he nui. A facade hiki ke hāʻawi i nā hana liʻiliʻi i hoʻohālikelike ʻia me ka hana pololei me ka subsystem. Eia nō naʻe, aia wale nō nā hiʻohiʻona e mālama pono ai nā mea kūʻai aku.

Loaʻa i hoʻokahi facade He mea pono ia i ka wā e pono ai mākou e hoʻohui i ka app me kahi hale waihona puke i loaʻa i nā hanana he nui, akā pono mākou i kahi hapa liʻiliʻi o kāna hana.

No ka laʻana, hiki i kahi polokalamu e hoʻouka ana i nā wikiō ʻakaʻaka pōkole e hōʻike ana i nā pōpoki i ka pāpaho pūnaewele hiki ke hoʻohana i kahi waihona hoʻololi wikiō ʻoihana. Eia nō naʻe, ʻo kā mākou mea e pono ai he papa me ke ʻano hoʻokahi encode(filename, format). Ma hope o ka hana ʻana i kēlā papa a hoʻopili iā ia i ka waihona hoʻololi wikiō, e loaʻa iā mākou kā mākou mea mua facade.

No ka laʻana, ʻo ka mea hoʻohana kelepona o kahi kikowaena kelepona e like me a facade. ʻOiaʻiʻo, ke kāhea mākou i ka lawelawe kelepona o kahi hale kūʻai e kau i kahi kauoha kelepona, na mākou ka mea hoʻohana facade i nā lawelawe a me nā keʻena o ka hale kūʻai. Hāʻawi ka mea hoʻohana i kahi leo leo maʻalahi i ka ʻōnaehana kauoha, nā puka uku a me nā lawelawe hoʻouna like ʻole.

Laʻana maoli ma PHP

E noʻonoʻo Nahenahe ma ke ʻano he mea hoʻopili maʻalahi no kekahi mau subsystem paʻakikī. Facade hoʻokaʻawale i ka paʻakikī i loko o kahi papa hoʻokahi a ʻae i nā code palapala noi e hoʻohana i ka interface maʻalahi.

Ma kēia laʻana, Facade huna i ka paʻakikī o ka YouTube API a me ka waihona FFmpeg mai ka code client. Ma kahi o ka hana ʻana me nā papa he nui, hoʻohana ka mea kūʻai aku i kahi ala maʻalahi ma 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

Nupepa hou
Mai poina i ka nūhou nui loa e pili ana i ka hana hou. E kākau inoa e loaʻa iā lākou ma ka leka uila.

Nā nūpepa hou

Hōʻike ʻo Veeam i ke kākoʻo piha loa no ka ransomware, mai ka pale ʻana i ka pane a me ka hoʻihoʻi

E hoʻomau ʻo Coveware e Veeam i ka hoʻolako ʻana i nā lawelawe pane ʻana i ka hanana cyber extortion. E hāʻawi ʻo Coveware i nā forensics a me nā mana hoʻoponopono…

23ʻApelila 2024

ʻO Green and Digital Revolution: Pehea ka hoʻololi ʻana o ka mālama ʻana i ka ʻoihana ʻaila a me nā kinoea

Ke hoʻololi nei ka mālama wānana ʻana i ka ʻāpana ʻaila a me ke kinoea, me kahi ala hou a hoʻoikaika i ka hoʻokele mea kanu.…

22ʻApelila 2024

Hoʻokiʻekiʻe ʻo UK antitrust regulator i BigTech alarm ma luna o GenAI

Ua hoʻopuka ka UK CMA i kahi ʻōlelo aʻo e pili ana i ka hana a Big Tech i ka mākeke naʻauao. Aia…

18ʻApelila 2024

ʻO Casa Green: hoʻololi i ka ikehu no ka wā e hiki mai ana ma Italia

ʻO ka "Case Green" Decree, i hoʻokumu ʻia e ka European Union e hoʻonui ai i ka ikehu o nā hale, ua hoʻopau i kāna kaʻina hana kānāwai me…

18ʻApelila 2024