package com.factory;
import java.util.HashMap;
import java.util.Map;
//Factory class
class FactoryClass {
Map products = new HashMap();
void registerProduct(String prodId, ProductInt prodInterface) {
products.put(prodId, prodInterface);
}
ProductInt createProduct(String prodId) {
return ((ProductInt) products.get(prodId)).createProduct();
}
}
// Client
public class FactoryPattern {
public static void main(String[] args) {
FactoryClass factory = new FactoryClass();
factory.createProduct("pen");
}
}
package com.factory;
//Interface Product
public interface ProductInt {
ProductInt createProduct();
}
// Concrete Product-1
class Pen implements ProductInt {
static {
FactoryClass factory = new FactoryClass();
factory.registerProduct("pen", new Pen());
}
public ProductInt createProduct() {
return new Pen();
}
}
// Concrete Product-2
class Pencil implements ProductInt {
static {
FactoryClass factory = new FactoryClass();
factory.registerProduct("pencil", new Pencil());
}
public ProductInt createProduct() {
return new Pencil();
}
}
このコードを実行すると、ハッシュマップに製品が登録されていないため、nullpointer が返されます。したがって、「pencil」の Product インスタンスを要求したとき、具体的な Pencil クラス オブジェクトを返すキーが見つかりませんでした。これをコーディングするのを手伝ってくれる人はいますか? Factory と具体的なクラスの間に直接の関係があってはならないようなものです。 、登録が Factory クラスの外にとどまり、要求する適切な具体的なクラス オブジェクトを取得する必要がありますか?
ありがとうバラジ