Sobes.tech
Middle

Кадом моделҳои тарҳрезӣ, ғайр аз Singleton, истифода бурдед?

sobes.tech AI

Ҷавоб аз AI

  • Factory Method. Ман истифода мебурдам барои эҷоди объектҳо бе нишон додани намуди мушаххаси синфи онҳо. Ин барои вақте муфид аст, ки логикаи эҷоди объект вобаста ба субсинфҳо бошад.
  • Abstract Factory. Ман онро барои эҷоди оилаҳои вобаста ё вобастаҳои алоқаманд истифода мебурдам, бо пешниҳоди интерфейс барои ин, аммо бе нишон додани синфҳои мушаххас.
  • Builder. Ман онро барои эҷоди қадам ба қадам объектҳои мураккаб истифода мебурдам, ки дар он тартиб ва омехтаи қадамҳо метавонанд тағир ёбанд. Ин имкон медиҳад, ки аз "конструкторҳои телескоп" канорагирӣ шавад.
  • Observer. Ман онро барои эҷоди вобастагиҳо "як ба бисёре" байни объектҳо истифода мебурдам, ки дар он тағироти ҳолати як объект ба таври автоматӣ ҳамаи объектҳои вобаста огоҳ карда мешаванд.
  • Strategy. Ман онро барои муайян кардани оилаҳои алгоритмҳо, инкапсулир кардани ҳар яке ва таъмин кардани ивазшавии онҳо истифода мебурдам. Ин имкон медиҳад, ки алгоритмро дар вақти иҷро интихоб кунам.
  • Decorator. Ман онро барои илова кардани масъулиятҳои нав ба объектҳо бидуни тағир додани сохтори онҳо истифода мебурдам.
  • Proxy. Ман онро дар ҳолатҳое истифода мебурдам, ки лозим аст, ки дастрасиро ба объект назорат кунам, масалан барои боркунии суст ё таъмин кардани дастрасии дур.
  • Template Method. Ман онро барои муайян кардани рамзи алгоритм дар суперкласс истифода мебурдам, ки ба субсинфҳо имкон медиҳад, ки қадамҳои муайянро иваз кунанд бидуни тағир додани сохтори асосӣ.
  • Adapter. Ман онро барои табдили интерфейси як синф ба интерфейси интизоршудаи муштариён истифода мебурдам. Ин имкон медиҳад, ки бо синфҳое кор кунем, ки интерфейсҳои номувофиқ доранд.
  • Command. Ман онро барои инкапсули кардани дархост ҳамчун объект истифода мебурдам, ки имкон медиҳад, ки муштариёнро бо дархостҳои гуногун параметргузорӣ кунам, дар навбат гузорам ё логҳои амалиётҳоро нигоҳ дорам, ва инчунин дастгирии бекор кардани амалиётҳоро.

Маслиҳат барои иҷрои Factory Method:

// Интерфейси маҳсулот
interface Product {
    void doSomething();
}

// Маҳсулоти мушаххас
class ConcreteProductA implements Product {
    @Override
    public void doSomething() {
        System.out.println("Мекунад дар Product A");
    }
}

class ConcreteProductB implements Product {
    @Override
    public void doSomething() {
        System.out.println("Мекунад дар Product B");
    }
}

// Интерфейси истеҳсолкунанда
abstract class Creator {
    public abstract Product factoryMethod();

    public void someOperation() {
        Product product = factoryMethod();
        product.doSomething();
    }
}

// Истеҳсолкунандагони мушаххас
class ConcreteCreatorA extends Creator {
    @Override
    public Product factoryMethod() {
        return new ConcreteProductA();
    }
}

class ConcreteCreatorB extends Creator {
    @Override
    public Product factoryMethod() {
        return new ConcreteProductB();
    }
}