대화의 공장 모델
1. 공장 모델
사용자가 제품을 구매할 때 작은 작업장에 가서 제품을 보고 싶지 않다(절차의 측면에서 보면 new의 대상이다). 사용자는 큰 공장을 선택하여 제품을 보고 선택할 것이다. 이런 제품이야말로 품질 보증이 있고 공장은 일반적으로 엄격한 생산 기준을 가지고 있다.
(1) 단순 공장 모델
사용자가 컴퓨터 시티에 가서 부품을 사려고 하는데 공장 부품의 이름을 직접 알려주면 공장은 부품의 대상인 new를 사용자에게 준다.
public class SimpleFactory {
public static ComputerPart getCar(String name){
if (name.equals("cpu")){
return new Cpu();
}else if (name.equals("mainboard")){
return new Mainboard();
}else if (name.equals("memory")){
return new Memory();
}else if (name.equals("videocard")){
return new VideoCard();
}else {
System.out.println("sorry, ");
return null;
}
}
}
Test
public class SimpleFactoryTest {
public static void main(String[] args) {
ComputerPart part = SimpleFactory.getCar("cpu");
if (part != null)
System.out.println(part.getPart());
}
}
(2) 공장 방법 모델
단순 공장 모델은 사용자에게 적합하지만 한 공장의 관리는 유지하기 어렵다. 절차의 측면에 따라 제품이 수천 수만 가지가 있다면 계속ifelse에 가서 판단해야 합니까?이런 코드는 비대할 뿐만 아니라, 어떤 제품을 포지셔닝해야 하는지를 유지하는 것도 어려운 일이다.
public class IntelFactory {
public static ComputerPart getPart(){
return new Cpu();
}
}
public class KingshidunFactory {
public static ComputerPart getPart(){
return new Memory();
}
}
public class HuaShuoFactory {
public static ComputerPart getMainboard(){
return new Mainboard();
}
public static ComputerPart getVideoCard(){
return new VideoCard();
}
}
Test
public class FuncFactoryTest {
public static void main(String[] args) {
ComputerPart part = HuaShuoFactory.getMainboard();
if (part != null)
System.out.println(part.getPart());
}
}
(3) 추상적인 공장 모델
방법 공장 모델에 따르면 만약에 컴퓨터 부품을 사는 사용자가 공장에 대해 익숙하지 않다면 그것은 사용자를 미치게 할 것이 아니다. 사용자의 마음속에 mmp를 확신한다. 나는 메모리를 사고 싶은데 너는 나에게 어느 공장을 선택하라고 한다. 나는 공장을 알아야 한다.
AbstractFactory.java
public abstract class AbstractFactory {
public abstract ComputerPart getCpu();
public abstract ComputerPart getMainBoard();
public abstract ComputerPart getMemory();
public abstract ComputerPart getVideoCard();
}
DefaultFactory: 상점은 어떤 부품이 어떤 공장의 것인지 잘 관리할 수 있다
public class DefaultFactory extends AbstractFactory{
public ComputerPart getCpu() {
return IntelFactory.getPart();
}
public ComputerPart getMainBoard() {
return HuaShuoFactory.getMainboard();
}
public ComputerPart getMemory() {
return KingshidunFactory.getPart();
}
public ComputerPart getVideoCard() {
return HuaShuoFactory.getVideoCard();
}
}
Test: 사용자는 부품이 어느 공장에서 생산되는지 상관하지 않고 가게를 통해 제품의 이름을 말하면 됩니다.
public class AbstractFactoryTest {
public static void main(String[] args) {
DefaultFactory factory = new DefaultFactory();
ComputerPart part = factory.getMainBoard();
if (part != null)
System.out.println(part.getPart());
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.