Abstract Factory
Abstract Factory не използва условен блок, за да създаде обектите, вместо това използва factory клас за всеки подклас. Abstract Factory клас, връща подкласа въз основа на factory клас на входа.
Нека да видим прилагането на този модел при създаването на компютърни конфигурациии.
Първо ще е необходим абстрактен клас
public abstract class Computer {
public abstract String getRAM();
public abstract String getHDD();
public abstract String getCPU();
@Override
public String toString(){
return "RAM= "+this.getRAM()+", HDD="+this.getHDD()+", CPU="+this.getCPU();
}
}Класа ще съдържа абстрактни методи за компонентите на всеки компонент
Следващата стъпка е да създадем фактическия клас наследник на абстрактния
public class DvaesktopComputer extends Computer {
private String ram;
private String hdd;
private String cpu;
public PC(String ram, String hdd, String cpu){
this.ram=ram;
this.hdd=hdd;
this.cpu=cpu;
}
@Override
public String getRAM() {
return this.ram;
}
@Override
public String getHDD() {
return this.hdd;
}
@Override
public String getCPU() {
return this.cpu;
}
}В тези класове само имплементираме абстрактните методи от родителския клас
Следващата стъпка е да се създадат Abstract Factory класа
Abstract Factory може да бъде интерфейс или абстрактен клас
Методът createComputer връща екземпляр на супер класа Computer. Сега фабричните класове ще реализират този интерфейс и ще върнат съответния подклас.
Сега следва да се създаде Factory клас, който ще осигури входната точка за създаване на подкласове.
Tова е клас с метод който приема аргумент и връща обект. На този етап изпълнението трябва да стане ясно. Нека да напишем прост метод за тестване и да видим как да използваме абстрактната фабрика, за да получим инстанцията на подкласовете.
Предимства
Моделът на дизайна на Abstract Factory осигурява подход към кода за интерфейс, а не към изпълнението.
Моделът Abstract Factory е "фабрика на фабрики" и може лесно да бъде разширен, за да побере повече продукти, например можем да добавим още един подклас лаптоп и фабрика LaptopFactory.
Моделът на Abstract Factory е здрав и избягва условната логика на фабричния модел.
Last updated
Was this helpful?