Не могу разобраться в определении шаблона проектирования фабричного метода.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Не могу разобраться в определении шаблона проектирования фабричного метода.

Сообщение Anonymous »

Определение
Фабричный шаблон или шаблон фабричного метода говорит, что просто определите интерфейс или абстрактный класс для создания объекта, но позвольте подклассам решать, экземпляр какого класса создавать. Другими словами, подклассы отвечают за создание экземпляра класса. Шаблон фабричного метода также известен как виртуальный конструктор.
Источник: https:// www.javatpoint.com/factory-method-design-pattern

Код: Выделить всё

// Superclass
public abstract class Weapon {
// Abstract factory method
public abstract void displayWeapon();
}

// Subclass 1: MeleeWeapon
public class MeleeWeapon extends Weapon {
@Override
public void displayWeapon() {
System.out.println("Display a Melee Weapon.");
}
}

// Subclass 2: RangedWeapon
public class RangedWeapon extends Weapon {
@Override
public void displayWeapon() {
System.out.println("Display a Ranged Weapon.");
}
}

// Subclass 3: MagicWeapon
public class MagicWeapon extends Weapon {
@Override
public void displayWeapon() {
System.out.println("Display a Magic Weapon.");
}
}

// Creator class
public class WeaponCreator {
// Factory method
public Weapon createWeapon(String weaponType) {
if (weaponType.equalsIgnoreCase("melee")) {
return new MeleeWeapon();
} else if (weaponType.equalsIgnoreCase("ranged")) {
return new RangedWeapon();
} else if (weaponType.equalsIgnoreCase("magic")) {
return new MagicWeapon();
} else {
throw new IllegalArgumentException("Invalid weapon type: " + weaponType);
}
}
}

public class Main {
public static void main(String[] args) {
// Create a WeaponCreator instance
WeaponCreator creator = new WeaponCreator();

// Create different weapons using the factory method
Weapon melee = creator.createWeapon("melee");
melee.displayWeapon();  // Output: Displaying a Melee Weapon.

Weapon ranged = creator.createWeapon("ranged");
ranged.displayWeapon();  // Output: Displaying a Ranged Weapon.

Weapon magic = creator.createWeapon("magic");
magic.displayWeapon();  // Output: Displaying a Magic Weapon.
}
}

Мой вопрос
  • Как подкласс решает, какой класс создать? Насколько я понимаю, фабричный метод WeaponCreator решает, какой класс создать, используя входные данные метода.
  • Что означает предложение Шаблон фабричного метода также известен как виртуальный конструктор< /strong> на самом деле означает?
Пожалуйста, помогите мне с примерами, поскольку я не могу понять это простое определение.

Подробнее здесь: https://stackoverflow.com/questions/783 ... definition
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»