대화의 공장 모델

3385 단어

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에 가서 판단해야 합니까?이런 코드는 비대할 뿐만 아니라, 어떤 제품을 포지셔닝해야 하는지를 유지하는 것도 어려운 일이다.
  • intel 공장의 cpu
  • 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());
        }
    }
    

    좋은 웹페이지 즐겨찾기