Кадом моделҳои тарҳрезӣ дар амал истифода бурдед?
sobes.tech AI
Ҷавоб аз AI
Дар амалии ман дар истифодаи намунаҳои зерин дар назар дорам:
-
Фабричний метод (Factory Method): Барои эҷоди объектҳои гуногун навъҳо бе муайян кардани синфи мушаххас. Барои кор бо манбаъҳои гуногуни маълумот ё конфигуратсияҳо муфид аст.
// Намунаи истифодаи усули фабрика class DataReader { read() { throw new Error("Метод амалӣ нашудааст"); } } class FileReader extends DataReader { read() { console.log("Хондани маълумот аз файл..."); } } class NetworkReader extends DataReader { read() { console.log("Хондани маълумот аз шабака..."); } } class DataReaderFactory { createReader(type) { switch (type) { case "file": return new FileReader(); case "network": return new NetworkReader(); default: throw new Error("Навъи хонанда номаълум аст"); } } } const factory = new DataReaderFactory(); const fileReader = factory.createReader("file"); fileReader.read(); -
Синглтон (Singleton): Барои таъмини он ки танҳо як нусхаи синф вуҷуд дорад ва дастрасии глобалӣ ба он таъмин аст. Бештар барои мудирони конфигуратсия ё пайвастшавӣ ба базаҳои додаҳо истифода мешавад.
// Намунаи истифодаи синглтон class ConfigManager { constructor() { if (ConfigManager.instance) { return ConfigManager.instance; } this.config = {}; ConfigManager.instance = this; } setConfig(key, value) { this.config[key] = value; } getConfig(key) { return this.config[key]; } } const instance1 = new ConfigManager(); const instance2 = new ConfigManager(); console.log(instance1 === instance2); // true -
Обсервер (Observer): Барои татбиқи муносибати "як ба бисёре", ки дар он тағйирёбии ҳолати як объект (эҷодкунанда) ба таври автоматӣ ҳамаи объектҳои вобаста (обунакунандагон) огоҳ карда мешаванд. Дар системҳои огоҳӣ, интерфейсҳои реактивӣ истифода мешавад.
// Намунаи истифодаи обсервер class Observable { constructor() { this.observers = []; } subscribe(observer) { this.observers.push(observer); } unsubscribe(observer) { this.observers = this.observers.filter(obs => obs !== observer); } notify(data) { this.observers.forEach(observer => observer.update(data)); } } class Observer { update(data) { console.log("Обновление қабул шуд:", data); } } const observable = new Observable(); const observer1 = new Observer(); const observer2 = new Observer(); observable.subscribe(observer1); observable.subscribe(observer2); observable.notify("Маълумоти нав дастрас аст!"); -
Стратегия (Strategy): Барои муайян кардани оилаҳои алгоритмҳо, онҳоро инкапсулатсия кардан ва ивазшавандагии онҳо таъмин кардан. Ин имкон медиҳад, ки алгоритмро мустақил аз мизоҷон, ки онро истифода мебаранд, тағйир дод. Барои вариантҳои гуногуни коркарди маълумот ё иҷрои амалҳо истифода мешавад.
// Намунаи истифодаи стратегия class PaymentStrategy { pay(amount) { throw new Error("Метод амалӣ нашудааст"); } } class CreditCardPayment extends PaymentStrategy { pay(amount) { console.log(`Пардохт ${amount} бо корти кредитӣ`); } } class PayPalPayment extends PaymentStrategy { pay(amount) { console.log(`Пардохт ${amount} бо PayPal`); } } class PaymentContext { setStrategy(strategy) { this.strategy = strategy; } executePayment(amount) { this.strategy.pay(amount); } } const context = new PaymentContext(); context.setStrategy(new CreditCardPayment()); context.executePayment(100); context.setStrategy(new PayPalPayment()); context.executePayment(50); -
Декоратор (Decorator): Барои иловагии динамикӣ ба функсионалият объект бе тағир додани сохтори он. Обвора мекунад объектро, пешниҳод мекунад ҳамон интерфейс, ки ваъда медиҳад, аммо бо функсионалият иловагӣ. Барои логгирӣ, тасдиқ, кеш истифода мешавад.
// Намунаи истифодаи декоратор class Component { operation() { return "Бунёдии компонент"; } } class Decorator { constructor(component) { this.component = component; } operation() { return this.component.operation(); } } class ConcreteDecoratorA extends Decorator { operation() { return `ConcreteDecoratorA(${super.operation()})`; } } class ConcreteDecoratorB extends Decorator { operation() { return `ConcreteDecoratorB(${super.operation()})`; } } const simple = new Component(); console.log(simple.operation()); const decoratorA = new ConcreteDecoratorA(simple); console.log(decoratorA.operation()); const decoratorB = new ConcreteDecoratorB(decoratorA); console.log(decoratorB.operation()); -
Модул (Module): Гарчанде ки системаи модулҳо дар Node.js дарунсохт аст (CommonJS, ES Modules), намунаи Module pattern дар JavaScript (пеш аз пайдоиши модулҳои нативӣ) барои эҷоди аъзои хусусӣ ва интерфейси умумӣ истифода мешуд. Ин асоси сохтани коди инкапсулатсияшуда мебошад.
Ин намунаҳо ба ман кӯмак карданд, ки коди сохторӣ, масштабшаванда ва нигоҳдоштанӣ нависам.