Proxy pattern Bir obyekti temsil eden bashqa bir obyekt nezerde tutulur bu patternde. Her hansi bir tehlukesizliyin qarshisi alinmir, sadece Proxy uzerinden lazim olan obyekte chatiriq ve bu cache sistemi ile gedir. Tutaq ki, DB ya qoshulmaq uchun uzun bir vaxt teleb eden configrationlardan ibaret olan class var: HeavyConnector. Normalda bu classdan obyekt yaradan kimi bu DB ile elaqe hal hazirda lazim oldu ve ya olmadi yaranir. Bu da proyektin gec ishlemesine sebeb ola biler. Buna gore Proxy anlayishindan istifade olunur. Artiq Connector interface den istifade edib, polimorfizme gore ProxyConnector classinin obyektini yaradib Connector obyektine set ede bilerik. Connector connector = new ProxyConnector(); bu setirde yalniz ProxyConnector obyekti yaranacaq. heavyConnect metodu hele cagrilmayib. Yalniz connector.connect(); dedikden sonra HeavyConnector classinin obyekti yaranacaq ve constructor vasitesile bu metod cagrilacaq.
Mikroservisleri tercih etmek uchun 4 esas sebeb var : Scalability Bu ozellik monolit application da da mumkundur. Horizontal ve Vertical Scalability: - Horizontal, Serverimiz tutaq ki , 4gb ram da ishleyir. Hal hazir ki veziyyete gore uygun olsada musteri sayi artandan sonra serverin ramini artira bilerik. Lakin bunun bir limiti vardir. (diger paratmetrlerde daxilidr, cpu, harddrive). Yeni horizontal - sistemi guclendirmek basha dushulur. Burada limit oldugundan , sonradan yeni sistem alinmalidir, lakin server yalniz bir komputer olmalidir. - Vertical, burada yaradilan servisin kopyasini yaratmaq basha dushulur. Esasen mikroservis arxitekturasinda istifade olunur. Meselen Account Service 1000 sorgu emal ede bilirse, bu servisin kopyasi da 1000 sorgu emal edecek. Bu mikroservis oluduguna gore ishletdiyi ram daha az olacaqdir (ve ya diger parametrler) Burada servislerin kopyasini avtomatik yaradilmasini temin eden sistemler var ki, bunlara misal olaraq Kubernetes, Rancher ve ya cust...
S: Single Responsibility Principle O: Open-Closed Principle L: Liskov Substitution Principle I: Interface Segregation Principle D: Dependency Inversion Principle S : Her bir class yalniz bir ishi gormelidir . DBConnector classimiz var. Bu class yalniz DB ya connect ishini gormelidir, her hansi CRUD emeliyyati burda olmasi duzgun deyil. Bashqa numune, Tutaq ki, Student ve Teacher classlarimiz var. Melumdur ki, Student ve Teacher ayri ayriliqda datalara sahibdir, bunlari eyni class daxilinde tutmaq duzgun deyil. Bu metodlara da aiddir. O : Class extends olunmaga aciq, modifier olunmaga bagli olmalidir. Tutaq ki, Car ve ondan extends eden BMW classi var. Sonradan eger BMW classinda her hansi deyishiklik olsa, bu zaman NewBMW classini yaradib ve BMW den extends etmeliyik. BMW classinin ichinde deyishiklik etmek duzgun sayilmir. L : Extends edilen classin obyekti evezine extends olunan classin obyektini gondermek hemishe mumkun olmalidir. Meselen Car classini...
Comments
Post a Comment