[094] 공장 모델

1778 단어

간단한 공장


단순 공장은 다른 공장을 통해 실례화 대상이 공통된 기류를 가진 한 조의 대상을 가지기 때문에 구체적인 종류의 유명을 전혀 알 필요가 없이 직접 실례화할 수 있다.
class product{  
}

class ConcreteProductA extends product{ 
}

class ConcreteProductB extends product{ 
}

class Factory
{
  createConcreteProduct(String productType);
  {
    if (productType == A)
    {
      return new ConcreteProductA();
    }
    if (productType == B)
    {
      return new ConcreteProductB();
    }
  }
}

공장 방법 모델


간단한 공장 예에서 설명하자면 우리는 Concrete ProductA를 만들고 Concrete ProductB를 만드는 실례를 구체적인 공장에 두었다.나사는 나사 공장에, 타이어는 타이어 공장에.
abstract class  abstractFactory{
    createContreteProduct();
};
class AFactory extends abstractFactory {};
class BFactory extends abstractFactory {};

우리는 다음과 같은 장면을 상상한다.
간단한 프로젝트에서 제품C를 만들어야 한다면 팩토리 종류를 수정해야 하지만 공사 방법이라면 Cfactory를 추가하면'개방폐합'원칙에 부합된다.공장 방법 모델에 대한 코드는 다음과 같다. class CFactory extends abstractFactory {}; // CFactory 간단한 공장에 대한 구체적인 코드는 다음과 같다. class Factory{ createConcreteProduct(String productType); { if (productType == A) ... if (productType == C) { return new ConcreteProductC(); } } }

공장 방법의 실제에서의 응용


pass플랫폼 메타데이터 접근층에서 접근하는 데이터는 mysql의,postgres의,rest가 접근하는 등 다양하다.시스템에서 dispatcher를 통해 다음과 같은 다양한 유형의 데이터 처리를 배포합니다.
ObjectDataDispatcher implement IObjectDataService{
   create(IObjectData objectData,String type)
  {
     IObjectDataService dataService= IObjectDataServiceFactory.getInstance(type); // 
     // type rest, dataService AbstractRestDataService
     dataService.save(objectData)
  }
}

원본 코드를 읽을 때 이 공장 모델을 정리하면 코드 작성자의 배후 의도를 생각할 수 있다. 예를 들어 여기는 공장 방법을 통해 각각rest/postgres의 서로 다른 데이터 서비스를 만들고 서로 다른 데이터에 접근하는 목적을 달성하는 것이다.

좋은 웹페이지 즐겨찾기