이 공장 유형 패턴의 이름은 무엇이며 UML에서 어떻게 표현합니까?
-
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이 작성된 시스템에 새로운 자동차 유형을 사용할 수 있습니다.
질문:
- 이 패턴은 무엇입니까? 아니면 여러 패턴이 결합 되었습니까?
- 이 중 하나가 반포 란입니까?
- UML에서 이것을 어떻게 표현합니까? 부품과 기본 자동차 클래스에 대한 클래스 다이어그램을 할 수 있습니다. 현재 지원되는 해당 클래스의 인스턴스와 그들이 가진 부분을 어떻게 보여 주겠습니까?
미리 감사드립니다. 이 중 하나가 불분명하면 의견을 제시하십시오. 자세한 내용은 수정/UDPATE/자세한 내용을 제공하겠습니다.
해결책 3
- 이 패턴은 무엇입니까? 아니면 여러 패턴이 결합 되었습니까?
설명 된 패턴은 건축업자 무늬. 빌더 패턴은 단순한 부품 세트에서 복잡한 객체를 구축합니다. 때로는 빌더 패턴에 의해 건축 된 물체가 있습니다 합성물 대상 (문제의 경우에는 반드시 필요하지 않음).
빌더 패턴은 종종 하드 코딩 된 성분 목록을 사용하여 입증되지만,이를 요구하는 패턴에는 아무것도 없으며 "성분 목록"접근법을 설명하는 특정 패턴이있는 것 같습니다.
- 이 중 하나가 반포 란입니까?
아니
- UML에서 이것을 어떻게 표현합니까?
아마 : 아마도 :
- 부품을 클래스 및 자동차 클래스로 표시하는 클래스 다이어그램을 정의하십시오. 각 부품 클래스가 ICARPART 인터페이스를 구현 함을 보여줍니다.
- 아마도 UML 인스턴스 표기법을 사용하여 자동차 클래스의 인스턴스라는 이름의 별도 (그러나 링크 된) 클래스 다이어그램 쇼에서. 인스턴스 클래스 표현을 사용하면 해당 클래스에서 속성이 가진 값을 지정할 수 있습니다.
------------------------------------------ |ExpensiveCar : Car | ------------------------------------------ |parts = { | |HeatedSeats, | |Wheel (count = 4), | |RearParkingSensor, | |ElectricWindows (type = FrontAndBack) } | ------------------------------------------
이것은 인스턴스이기 때문에 "ExpensiveCar : CAR"텍스트는 밑줄을 긋어야하지만이를 수행 할 수는 없습니다.
내가 여기에서 사용한 부분으로 배열을 초기화하는 데 사용한 표기법은 좋지 않으며 최선의 접근법이 아닐 수도 있습니다. 아마도 대안은 실제 XML을 포함하는 UML 노트를 추가하는 것입니다. 중요한 것은 고객이 값 비싼 자동차를 만드는 이유를 볼 수 있고 프로그래머가 될 수 있다는 것입니다.
다른 팁
이 패턴은 무엇입니까? 아니면 여러 패턴이 결합되어 있습니까?
당신은 있습니다 공장 방법 패턴 (자동차 물체 생성) 및 좋은 오래된 구성 (바퀴, 시트 등에서 차를 만드는). 후자는 구성의 변형이다.
나는 이것이 당신이 서로의 부품 세트와 호환되기를 원하기 때문에 추상 공장 패턴 일 수 있다고 생각합니다. 당신은 아마도 소형 자동차 바퀴에 트럭 타이어를 원하지 않을 것입니다.