이 공장 유형 패턴의 이름은 무엇이며 UML에서 어떻게 표현합니까?

StackOverflow https://stackoverflow.com/questions/629997

  •  08-07-2019
  •  | 
  •  

문제

예 : 몇 가지 유형 (예 : 휠, 브레이크, 엔진, 클러치, 오토 보스, 수동 상자, 전기 윈도우, 리어 파킹 센서, 가열)가 있습니다. 이것들은 모두 ICARPART 마커 인터페이스를 상속합니다 (속성 (Java 주석) 일 수 있지만이 단계에서는 중요하지 않습니다).

그런 다음 모든 자동차 유형을 나타내는 자동차 수업을 작성합니다.

class Car
{
    string Name;
    DateTime creationDate;
    string ID;

    IList<ICarPart> parts;
}

그런 다음 공장을 작성하여 자동차를 만듭니다. 공장은 다른 자동차 유형의 성분 목록 인 일부 XML을 참조 할 수 있습니다. 예를 들어 (그리고 형식을 무시하십시오. 이것은 단지 그림을위한 것입니다) :

<ExpensiveCar>
  <Name>Expensive Car</Name>
  <Parts>
    <HeatedSeats/>
    <Wheel count=4/>
    <RearParkingSensor/>
    <ElectricWindow type=FrontAndBack/>
  </Parts>
</ExpensiveCar>

공장은이 성분 목록을 구문 분석하고 자동차 물체를 만들 것입니다. 부품을 코딩하고 성분 목록 XML이 작성된 시스템에 새로운 자동차 유형을 사용할 수 있습니다.

질문:

  1. 이 패턴은 무엇입니까? 아니면 여러 패턴이 결합 되었습니까?
  2. 이 중 하나가 반포 란입니까?
  3. UML에서 이것을 어떻게 표현합니까? 부품과 기본 자동차 클래스에 대한 클래스 다이어그램을 할 수 있습니다. 현재 지원되는 해당 클래스의 인스턴스와 그들이 가진 부분을 어떻게 보여 주겠습니까?

미리 감사드립니다. 이 중 하나가 불분명하면 의견을 제시하십시오. 자세한 내용은 수정/UDPATE/자세한 내용을 제공하겠습니다.

도움이 되었습니까?

해결책 3

  1. 이 패턴은 무엇입니까? 아니면 여러 패턴이 결합 되었습니까?

설명 된 패턴은 건축업자 무늬. 빌더 패턴은 단순한 부품 세트에서 복잡한 객체를 구축합니다. 때로는 빌더 패턴에 의해 건축 된 물체가 있습니다 합성물 대상 (문제의 경우에는 반드시 필요하지 않음).

빌더 패턴은 종종 하드 코딩 된 성분 목록을 사용하여 입증되지만,이를 요구하는 패턴에는 아무것도 없으며 "성분 목록"접근법을 설명하는 특정 패턴이있는 것 같습니다.

  1. 이 중 하나가 반포 란입니까?

아니

  1. UML에서 이것을 어떻게 표현합니까?

아마 : 아마도 :

  1. 부품을 클래스 및 자동차 클래스로 표시하는 클래스 다이어그램을 정의하십시오. 각 부품 클래스가 ICARPART 인터페이스를 구현 함을 보여줍니다.
  2. 아마도 UML 인스턴스 표기법을 사용하여 자동차 클래스의 인스턴스라는 이름의 별도 (그러나 링크 된) 클래스 다이어그램 쇼에서. 인스턴스 클래스 표현을 사용하면 해당 클래스에서 속성이 가진 값을 지정할 수 있습니다.
------------------------------------------
|ExpensiveCar : Car                      |
------------------------------------------
|parts = {                               |  
|HeatedSeats,                            |
|Wheel (count = 4),                      |
|RearParkingSensor,                      |
|ElectricWindows (type = FrontAndBack) } |
------------------------------------------

이것은 인스턴스이기 때문에 "ExpensiveCar : CAR"텍스트는 밑줄을 긋어야하지만이를 수행 할 수는 없습니다.

내가 여기에서 사용한 부분으로 배열을 초기화하는 데 사용한 표기법은 좋지 않으며 최선의 접근법이 아닐 수도 있습니다. 아마도 대안은 실제 XML을 포함하는 UML 노트를 추가하는 것입니다. 중요한 것은 고객이 값 비싼 자동차를 만드는 이유를 볼 수 있고 프로그래머가 될 수 있다는 것입니다.

다른 팁

이 패턴은 무엇입니까? 아니면 여러 패턴이 결합되어 있습니까?

당신은 있습니다 공장 방법 패턴 (자동차 물체 생성) 및 좋은 오래된 구성 (바퀴, 시트 등에서 차를 만드는). 후자는 구성의 변형이다.

나는 이것이 당신이 서로의 부품 세트와 호환되기를 원하기 때문에 추상 공장 패턴 일 수 있다고 생각합니다. 당신은 아마도 소형 자동차 바퀴에 트럭 타이어를 원하지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top