ProductFactory.java
package estore.business;
import estore.data.Book;
import estore.data.Electronics;
import estore.data.Product;
public final class ProductFactory {
private ProductFactory() {
}
public static Product createProduct(IProductCreationRequest request) {
if (request instanceof BookCreationRequest) {
BookCreationRequest bookRequest = (BookCreationRequest) request;
return new Book(
bookRequest.getProductId(),
bookRequest.getName(),
bookRequest.getPrice(),
bookRequest.getYear(),
bookRequest.getAuthor(),
bookRequest.getPublisher());
}
if (request instanceof ElectronicsCreationRequest) {
ElectronicsCreationRequest electronicsRequest = (ElectronicsCreationRequest) request;
return new Electronics(
electronicsRequest.getProductId(),
electronicsRequest.getName(),
electronicsRequest.getPrice(),
electronicsRequest.getYear(),
electronicsRequest.getMaker());
}
throw new IllegalArgumentException("Unsupported product creation request: " + request.getClass().getName());
}
}