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...
Builder Pattern (StringBuilder misal gostermek olar) Tutaq ki, her hansi bir class-miz var ve bu class daxilinde bir neche deyishen movcuddur (5,10 ve daha chox). Obyekti yaratmaq uchun constructora ehtiyac duydugumuzdan, her bir deyishen ve kombinasiyaya uygun constructor yaratmaliyiq. Bu da uygun yol sayilmir. Misal, tutaq ki, Image class var ve bu class in deyishen sayi choxdur. Constructorlarin sayi artmasin deye ImageBuilder tetbiq edirik. ImageBuilder ozunde Image obyektini saxladir ve ImageBuilder Constructoruna muraciet eden zaman, Image obyekti yaranir. Image parametrlerine uygun olaraq set medolari olur ve her defe yaratdigimiz Image obyektine parametrleri set edib ImageBuilder i geri qaytaririq. Sonda ish bitdikden sonra, build metodu vasitesi ile, Image obyektini elde edirik. Problem Bele bir sual meydana chixir ki, eger Image classinin constructoru ve set get metodlari publicdise, niye ImageBuilder classindan istifade etmeliyik ? Bu pro...