Рубрики
Без рубрики

Шаблон заводского проектирования на Java

Шаблон заводского проектирования на Java. Фабричный шаблон Java. Шаблон Проектирования заводского метода Java. Преимущества шаблона заводского проектирования, пример JDK, диаграмма классов.

Автор оригинала: 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;
	}
}

Некоторые важные моменты, касающиеся метода заводского проектирования, заключаются в следующем;

  1. Мы можем сохранить одноэлементный заводской класс или метод, возвращающий подкласс, как статический .
  2. Обратите внимание, что на основе входного параметра создается и возвращается другой подкласс. получить компьютер – это заводской метод.

Вот простая тестовая клиентская программа, которая использует описанную выше реализацию шаблона заводского проектирования.

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

Преимущества Заводского Дизайна

  1. Шаблон заводского проектирования обеспечивает подход к коду для интерфейса, а не к реализации.
  2. Фабричный шаблон удаляет создание экземпляров реальных классов реализации из клиентского кода. Заводской шаблон делает наш код более надежным, менее связанным и простым в расширении. Например, мы можем легко изменить реализацию класса ПК, потому что клиентская программа не знает об этом.
  3. Фабричный шаблон обеспечивает абстракцию между реализацией и клиентскими классами посредством наследования.

Примеры шаблонов заводского проектирования в JDK

  1. java.util.Методы Calendar, ResourceBundle и NumberFormat getInstance() используют заводской шаблон.
  2. Метод valueOf() в классах-оболочках, таких как Boolean, Integer и т. Д.

Видеоурок по дизайну фабрики на YouTube

Я недавно загрузил видео на YouTube для шаблона заводского дизайна, пожалуйста, проверьте его. Пожалуйста, поставьте лайк и поделитесь видео, а также подпишитесь на мой канал на YouTube.