Ixesha lokufunda eliqikelelweyo: 6 imizuzu
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.
Iipateni ezininzi zichazwa ngokusesikweni kakhulu ukuze abantu bakwazi ukuzivelisa kwakhona kwiimeko ezininzi. Makhe sibone ngezantsi izinto ezikhoyo kwinkcazo yemodeli:
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 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:
I-facade yipatheni yoyilo lwesakhiwo ebonelela ngojongano olulula kwithala leencwadi, isakhelo, okanye nayiphi na iseti entsonkothileyo yeeklasi.
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.
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.
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
I-Coveware nguVeeam iya kuqhubeka nokubonelela ngeenkonzo zokuphendula ngeziganeko zokuxhwilwa kwe-cyber. I-Coveware iya kubonelela nge-forensics kunye nezakhono zokulungisa…
Ugcino oluqikelelweyo luguqula icandelo le-oyile negesi, ngenkqubo entsha nesebenzayo kulawulo lwemizi-mveliso.…
I-CMA yase-UK ikhuphe isilumkiso malunga nokuziphatha kweBig Tech kwimarike yobukrelekrele bokwenziwa. Pha…
Umthetho we "Green Houses", oqulunqwe yiManyano yaseYurophu ukomeleza amandla ombane kwizakhiwo, ugqibezele inkqubo yowiso mthetho nge…