Автор оригинала: Pankaj Kumar.
Добро пожаловать в шаблон заводского проектирования в учебнике по Java. Фабричный шаблон является одним из шаблонов творческого дизайна и он широко используется в JDK, а также в таких фреймворках, как пружины и стойки.
Шаблон Заводского Дизайна
Шаблон заводского проектирования используется, когда у нас есть суперкласс с несколькими подклассами, и на основе входных данных нам нужно вернуть один из подклассов. Этот шаблон снимает ответственность за создание экземпляра класса с клиентской программы на заводской класс.
Давайте сначала узнаем, как реализовать шаблон заводского проектирования в java, а затем рассмотрим преимущества заводского шаблона. Мы увидим некоторые из шаблонов заводского проектирования, используемых в JDK. Обратите внимание, что этот шаблон также известен как Шаблон проектирования заводского метода .
Заводская Модель Дизайна Супер Класса
Суперкласс в шаблоне заводского проектирования может быть интерфейсом, абстрактным классом или обычным классом java. Для нашего примера шаблона заводского проектирования у нас есть абстрактный суперкласс с переопределенным методом toString()
для целей тестирования.
package com.journaldev.design.model; 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(); } }
Подклассы шаблонов заводского проектирования
Допустим, у нас есть два подкласса ПК и сервер с нижеприведенной реализацией.
package com.journaldev.design.model; public class PC 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; } }
Обратите внимание, что оба класса расширяют Компьютер
суперкласс.
package com.journaldev.design.model; public class Server extends Computer { private String ram; private String hdd; private String cpu; public Server(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; } }
Заводской Класс
Теперь, когда у нас есть готовые суперклассы и подклассы, мы можем написать наш фабричный класс. Вот основная реализация.
package com.journaldev.design.factory; import com.journaldev.design.model.Computer; import com.journaldev.design.model.PC; import com.journaldev.design.model.Server; public class ComputerFactory { public static Computer getComputer(String type, String ram, String hdd, String cpu){ if("PC".equalsIgnoreCase(type)) return new PC(ram, hdd, cpu); else if("Server".equalsIgnoreCase(type)) return new Server(ram, hdd, cpu); return null; } }
Некоторые важные моменты, касающиеся метода заводского проектирования, заключаются в следующем;
- Мы можем сохранить одноэлементный заводской класс или метод, возвращающий подкласс, как статический .
- Обратите внимание, что на основе входного параметра создается и возвращается другой подкласс.
получить компьютер
– это заводской метод.
Вот простая тестовая клиентская программа, которая использует описанную выше реализацию шаблона заводского проектирования.
package com.journaldev.design.test; import com.journaldev.design.factory.ComputerFactory; import com.journaldev.design.model.Computer; public class TestFactory { public static void main(String[] args) { Computer pc = ComputerFactory.getComputer("pc","2 GB","500 GB","2.4 GHz"); Computer server = ComputerFactory.getComputer("server","16 GB","1 TB","2.9 GHz"); System.out.println("Factory PC Config::"+pc); System.out.println("Factory Server Config::"+server); } }
Результатом вышеуказанной программы является:
Factory PC Config::RAM= 2 GB, HDD=500 GB, CPU=2.4 GHz Factory Server Config::RAM= 16 GB, HDD=1 TB, CPU=2.9 GHz
Преимущества Заводского Дизайна
- Шаблон заводского проектирования обеспечивает подход к коду для интерфейса, а не к реализации.
- Фабричный шаблон удаляет создание экземпляров реальных классов реализации из клиентского кода. Заводской шаблон делает наш код более надежным, менее связанным и простым в расширении. Например, мы можем легко изменить реализацию класса ПК, потому что клиентская программа не знает об этом.
- Фабричный шаблон обеспечивает абстракцию между реализацией и клиентскими классами посредством наследования.
Примеры шаблонов заводского проектирования в JDK
- java.util.Методы Calendar, ResourceBundle и NumberFormat
getInstance()
используют заводской шаблон. Метод valueOf()
в классах-оболочках, таких как Boolean, Integer и т. Д.
Видеоурок по дизайну фабрики на YouTube
Я недавно загрузил видео на YouTube для шаблона заводского дизайна, пожалуйста, проверьте его. Пожалуйста, поставьте лайк и поделитесь видео, а также подпишитесь на мой канал на YouTube.