Определение
Фабричный шаблон или шаблон фабричного метода говорит, что просто определите интерфейс или абстрактный класс для создания объекта, но позвольте подклассам решать, экземпляр какого класса создавать. Другими словами, подклассы отвечают за создание экземпляра класса. Шаблон фабричного метода также известен как виртуальный конструктор. Источник: 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> на самом деле означает?
Пожалуйста, помогите мне с примерами, поскольку я не могу понять это простое определение.
[b]Определение[/b] Фабричный шаблон или шаблон фабричного метода говорит, что просто определите интерфейс или абстрактный класс для создания объекта, но позвольте подклассам решать, экземпляр какого класса создавать. Другими словами, подклассы отвечают за создание экземпляра класса. Шаблон фабричного метода также известен как виртуальный конструктор. [b]Источник[/b]: https:// www.javatpoint.com/factory-method-design-pattern [code]// 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.
[/code] Мой вопрос [list] [*]Как подкласс решает, какой класс создать? Насколько я понимаю, фабричный метод WeaponCreator решает, какой класс создать, используя входные данные метода. [*]Что означает предложение Шаблон фабричного метода также известен как виртуальный конструктор< /strong> на самом деле означает? [/list] Пожалуйста, помогите мне с примерами, поскольку я не могу понять это простое определение.
Я изучаю шаблоны проектирования, и в реализации в Java я наткнулся на пример. Я сомневаюсь, почему мы должны создать отдельный интерфейс для создания объектов подклассов. Почему мы не можем создать просто создать экземпляр, используя новое ключевое...
На самом деле, я новичок в Spring Boot, но использую Spring уже некоторое время. В Spring я обрабатывал свою базу данных (MySQL) через общий DAO с помощью hibernate/JPA. Однако все учебные пособия, которые я нашел по Spring Boot, используют данные...
Я спрашиваю об этом как разработчик Perl, но считаю, что это характерно и для других языков программирования.
Как лучше всего определить глобальные переменные, используемые в проектах. p>
Один из способов — разместить их в одном модуле, например...
Есть ли какой-либо
шаблон проектирования интерфейса для классов.
В настоящее время я присоединяюсь к новой компании. и их шаблон проектирования:
Шаблон проектирования «Интерфейс к классу».
Но я не знаю ни одного шаблона проектирования «Интерфейс для...