상속을 활용하면 시간과 정신 건강을 절약할 수 있습니다! | Mendix

메인 컨텐츠로 가기

상속을 이용하면 시간과 정신 건강을 지킬 수 있습니다!

여러 엔티티를 모델링한 후, 그것들이 매우 유사하고 많은 공유 속성을 가지고 있다는 것을 깨달은 적이 있습니까? 상속을 사용하면 시간을 절약하고 프로젝트를 더 유지 관리하기 쉽게 만들 수 있습니다! 이 게시물에서는 상속이 무엇이고 상속을 가장 효과적으로 사용하는 방법을 보여드리겠습니다.

기본 이해

아래에 표시된 새로 만든 도메인 모델부터 시작해 보겠습니다. 보시다시피, 엔티티 간에 공유되는 속성이 많이 있습니다.

엔티티

여기서 세 가지 속성(이름, 연도, 승객 수)을 복제합니다. 이 세 가지 속성은 Car와 Boat 엔터티에서 공통적이므로 Vehicle이라는 새 엔터티로 옮길 수 있습니다. 이 새 엔터티를 '일반화된' 엔터티로 사용하겠습니다. Vehicle 엔터티가 생성된 후에는 Car와 Boat 엔터티를 열고 Vehicle을 일반화로 선택하여 일반화를 쉽게 설정할 수 있습니다.

집합 일반화

이제 이 관계를 설정했으므로, 내 Car 및 Boat 엔티티('특수' 엔티티)는 모든 Vehicle 속성에 액세스할 수 있습니다! 이를 통해 내 Car 및 Boat의 이름을 설정하고 한곳에서 관리할 수 있습니다. 하지만 이것이 내 Vehicle이 내 Boat 및 Car의 속성에 액세스할 수 있다는 것을 의미하지는 않는다는 점에 유의하는 것이 중요합니다. 이는 일방적 관계입니다.

전문화된 엔터티 생성

이전 섹션에서는 도메인 모델을 설정하고 Vehicle 엔티티를 만들고 상속 관계를 설정했습니다. 이제 엔티티를 만들 수 있도록 허용해야 합니다. 이를 수행하는 두 가지 일반적인 방법이 있습니다.

  1. 차량의 각 전문 분야에 대해 하나의 버튼을 만듭니다.
  2. 차량에 대한 특화 분야를 지정하는 버튼 하나를 만듭니다.

첫 번째 옵션은 구현하기 가장 간단하지만 최상의 사용자 경험을 제공하지는 않습니다. 해당 구현의 UI는 다음과 같습니다.

UI 옵션 1

이러한 각 버튼은 차량, 자동차 또는 보트와 같은 특수 객체를 생성하는 매우 유사한 마이크로플로우를 호출합니다(오토바이와 같이 자동차나 보트가 아닌 차량도 생성할 수 있습니다).

이 방법은 매우 간단하지만 중복된 Microflow와 버튼이 많습니다. 10개의 전문화와 10개의 다른 Microflow를 호출하는 10개의 버튼이 있다고 상상해 보세요. 이렇게 하면 혼란스럽고 지저분한 페이지가 생성됩니다.

여기서 두 번째 옵션이 흥미로워집니다!

옵션-2

버튼 하나만 있으면 이 페이지는 훨씬 더 좋습니다. 이 버튼은 일반화된 Vehicle 엔티티를 생성하고, 그 페이지에서 어떤 전문화를 생성할지 선택할 수 있습니다.

차량 유형

차량 유형을 선택하고 '다음'을 눌러 특수 엔티티를 만듭니다.

여기에서 적절한 전문화된 엔터티를 만들고 관련 세부 정보를 복사하는 것은 쉽습니다. 하지만 중복되거나 더러운 데이터를 만들지 않도록 일반화된 엔터티(차량)를 삭제해야 합니다. 이제 엔터티를 만들었으니 차량을 표시하고 관리할 방법이 필요합니다.

표시 및 관리

차량 목록을 표시하고 관리하는 쉬운 방법 중 하나는 목록 보기를 사용하는 것입니다. 이는 상속을 사용할 때 특히 유용한데, 각 전문화에 대해 다른 템플릿을 설정할 수 있기 때문입니다.

이 템플릿

템플릿을 사용하면 복잡한 페이지를 만들지 않고도 보트나 자동차에 대한 구체적인 정보를 한곳에서 보여줄 수 있습니다. 또한 일부 유형에만 특화하고 다른 유형에는 특화하지 않을 수도 있습니다. '기본 템플릿'은 특정 템플릿을 만들지 않은 모든 특화에서 사용됩니다.

이제 이 항목들을 볼 수 있게 되었으니, 편집 및 삭제 버튼을 만들어야 합니다. 이 과정에서 상속성도 고려하고 재사용성을 최적화해야 합니다. 보트는 차량이기도 하므로, 보트의 편집 및 삭제 버튼은 보트 또는 차량 매개변수를 가질 수 있습니다. 하지만 차량 매개변수만 사용해야 세 엔티티 모두에서 재사용할 수 있습니다. 편집 시에는 상속 분할을 사용해야 합니다.

녹색 다이아몬드는 내 상속 분할입니다. 분할을 수행한 후, 해당되는 경우 Vehicle을 특수 엔티티로 캐스팅해야 합니다. 그렇게 한 후, 엔티티를 특수 버전으로 사용할 수 있습니다. 삭제의 경우 상속 분할을 수행할 필요가 없습니다. 엔티티를 삭제하기 때문에 특수 버전은 관련이 없습니다. Boat나 Car를 삭제하든 상관없고, 그냥 삭제하는 것입니다.

이것은 배우기에 좋은 교훈이며 이해하기 어려울 수 있습니다. 특수 버전을 사용해야 하는 경우(예: 특수 엔터티의 필드 편집 또는 필요한 페이지 표시)가 아니면 상속 스핏을 수행할 필요가 없습니다.

데이터 그리드와 템플릿 그리드는 기본적으로 위의 편집 기능을 지원합니다. 목록 보기에서 템플릿을 설정하는 방법과 유사하게 기본 '편집' 버튼을 사용하여 전문화에 대한 페이지를 선택할 수 있습니다.

편집 페이지

Data Grids, Template Grids, List Views의 일반적인 트레이드오프 외에도 이제 상속별 트레이드오프가 있습니다. List View는 특정 데이터를 표시할 수 있지만 더 많은 로직을 관리해야 합니다. Data Grids와 Template Grids의 경우 플랫폼이 일부 로직을 관리하지만 일반 엔터티에 저장된 정보만 표시할 수 있습니다.

이제 특수화를 사용하여 엔티티를 만들고 관리하는 방법을 살펴보았으니, 나가서 시도해 보세요! 상속을 사용하는 데는 장단점이 있으므로 사용하기 전에 이를 고려해야 합니다. 몇 가지 일반적인 경험 규칙:

  1. 성능 문제가 발생할 수 있으므로 두 개 이상의 상속 계층을 사용하지 마십시오.
  2. 논리적인 장소에서만 상속을 사용하세요. 건물, 차, 사람이 있고, 모두 이름, 나이, 주소 필드가 있는데, 이것들을 일반화된 엔터티로 꺼내면 혼란스러울 수 있어요!

언어를 선택하세요