public class ItemFactory {
public static ItemInterface createItem(String barcode) {
ItemInterface item = null;
if (barcode.equals("food")) {
item = new FoodItem();
} else if (barcode.equals("bicycle")) {
item = new BicycleItem();
}
return item;
}
}
if ๋ถ๊ธฐ ํ๋จ ๋ ผ๋ฆฌ๋ฅผ ๋คํ์ฑ์ ์ฌ์ฉํจ์ผ๋ก์จ ์ ๊ฑฐํ ์ฝ๋
public class ItemFactory {
ItemInterface createItem();
}
public class FoodItemFactory implements ItemFactory {
@Override
public ItemInterface createItem() {
return new FoodItem();
}
}
public class BicycleItemFactory implements ItemFactory {
@Override
public ItemInterface createItem() {
return new BicycleItem();
}
}
public class ItemConfigSource {
public ItemConfig load (String item) {
ItemFactory itemFactory = null;
if(item.equals("food") {
itemFactory = new FoodItemFactory();
} else if (item.equals("bicylce") {
itemFactory = new BicycleItemFactory();
}
return itemFactory;
}
}
ํฉํฐ๋ฆฌ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์ ์ฌ์ ํ if๋ฌธ์ด ๊ณ์ ์จ์ ธ ์๋ค
ํฉํฐ๋ฆฌ์ ํฉํฐ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ํด๊ฒฐํ๋ค..
public class ItemConfigFactoryMap {
private static final Map<String, ItemInterfaceConfigFactory> cachedFactories = new HashMap<>();
static {
cachedFactories.put("food", new FoodItemFactory());
cachedFactories.put("bicycle", new BicycleItemFactory());
}
public static ItemInterfaceConfigFactory getItemFactory(String type) {
if(type == null || type.isEmpty()) {
return null;
}
ItemInterfaceConfigFactory factory = cachedFactories.get(type.toLowerCase());
return factory;
}
}
ํฉํฐ๋ฆฌ ํจํด์ ๊ฐ์ฒด ์์ฑ ํ๋ก์ธ์ค๋ฅผ ์บก์ํํ๊ณ , ๊ฐ์ฒด ์์ฑ๊ณผ ์ฌ์ฉ์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์๋ค
if ๋ถ๊ธฐ ํ๋จ ๋ ผ๋ฆฌ๊ฐ ์์ผ๋ฉฐ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ
๋จ์ผ ๊ฐ์ฒด ์์ฒด์ ์์ฑ ํ๋ก์ธ์ค๊ฐ ๋ณต์กํ ๊ฒฝ์ฐ
์ด๋ด ๋ ์ฌ์ฉํ ์ ์๋ค
| ๋น๋ํจํด ์ง์ ๊ตฌํํด๋ณด๊ธฐ (0) | 2024.11.05 |
|---|---|
| [๋์์ธํจํด] ์ฑ๊ธํด ํจํด (0) | 2024.05.01 |
| [๋์์ธํจํด์ ์๋ฆ๋ค์] 3์ฅ. ์ค๊ณ ์์น : ๋จ์ผ์ฑ ์์์น, ๊ฐ๋ฐฉํ์ ์์น (0) | 2024.04.20 |
| ์ด๋ํฐ ํจํด (0) | 2024.03.05 |