디자인 패턴을 적용을 변환하는 여러 개의 특성에 여러 개의 클래스

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

  •  05-07-2019
  •  | 
  •  

문제

내가 사용하여 대량살상무기 글 작성한 프로젝트 수에 해당하는 많은 수의 속성에서 많은 수의 엔티티 클래스입니다.일부는 클래스가 있는 여러 특성을 필요로 인하.

나는 저장하는 인문 이것은 쉽게 필드를 편집합니다.그러나 내가 변환이 필요 속성을 위해 HTML 표시니다.질문입니다:은 거기에 몇 가지 패턴을 사용할 수 있는 방 markdown 변환 코드에 있는 모든 내 엔터티 클래스가?

내가 만든 유틸리티 클래스와는 방법이 허용하는 markdown 문자열을 반환합니다.내가 사용하 markdownj 이 잘 작동합니다.

문제는 각 시설의 각 클래스 저장하는 인가 필요할 수 있는 다른 방법으로 변환하여 HTML:

public class Course{

     private String description;
     .
     .
     .
     public String getDescription(){
          return description;
     }

     public String getDescriptionAsHTML(){
          return MarkdownUtil.convert(getDescription());
     }
     .
     .
     .
 }

문제가 있는 경우 물론 클래스에는 2 개 이상의 속성 학비와 필수 구성 요소,말는 모두 필요 변환기때 써야 할 것이 getTuitionAsHTML()및 getPrerequisiteAsHTML().

내가 찾는 것은 조금 못생긴 것처럼 청정 솔루션입니다.클래스가 필요한 이하지 않은 부분의 상속 계층 구조입니다.

다른 옵션을 고려 중입니다 하이 컨트롤러에서 보다는 오히려 모델입니다.에 대한 당신의 생각은 무엇입니까 이?

감사합니다.

[편집]:새로운 생각을(감사합 재스퍼).이후 프로젝트를 사용하 struts2(말하지 않았 이전)만들 수 있습기 구성 요소를 말하는 것입니다 변환 markdown 습니다.그때 사용하는 어디든지 나는 표시하기 위해 필요한 값으로 HTML.

도움이 되었습니까?

해결책

클래스가 필요한 이하지 않은 부분의 상속 계층 구조입니다.

그들은 적어도를 구현하는 공통 인터페이스,그렇지 않으면 오고 깨끗한 일반적인 솔루션을 것입니다.

다른 옵션을 고려 중입니다 하이 컨트롤러에서 보다는 오히려 모델입니다.에 대한 당신의 생각은 무엇입니까 이?

이것은 분명히 책임을 확인할 수 있게 되었습니다.#1MVC 규칙은 모델에 대해 상관하지 않는 그 표현을 마크 다운 이 경우.

그러나 내가 있다는 것을 생각하는 작은 세부 사항에 대해 귀하의 현재 아키텍처를 주는 의미있는 당신의 질문에 대한 대답이다.

다른 팁

당신은 하나 옵션이 사용할 수 없는 경우에는 상속 또는 인터페이스입니다.나도 알아 리팩터링 하지만 이것이 현실과*충돌이 발생합니다.

할 수 있는 리플렉션을 사용하여 반복을 통해 귀하의 특성과 서식을 적용합니다.할 수 있습니다 그들을 태그와 속성이나 채택할 수 있는 이름표(부서지기 쉬운,그러나 여전히 옵션).

을 무시하고 건축 문제가 생각 간단한 대답이 될 수 있습니다:

public String getDescription(MarkDownUtil converter)
{
    if (converter == null) return description;
    else return MarkdownUtil.convert(description);
}

더 나은 것을 확인 MarkDownUtil 구현 IStringConverter,그리고 당신은 수 있다 여러 가지 서로 다른 StringConverters 에 대한 다양한 역할을 합니다.

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