복붙노트

[SCALA] 추상 클래스를 구현 대 특색을 가진 스칼라 클라이언트 구성

SCALA

추상 클래스를 구현 대 특색을 가진 스칼라 클라이언트 구성

나는 스칼라와 함께, 일반적으로 기본 클래스를 확장하는 형질 대신 추상 클래스를 사용하는 것이 좋습니다 읽었습니다.

좋은 디자인 패턴 및 레이아웃을 다음인가? 방법 특색 추상을 대체하기위한 한이 있습니까?

해결법

  1. ==============================

    1.나는 소스는 스칼라의 추상 클래스 이상의 특성을 선호해야한다는 주장에 대해 무엇인지 모르겠지만, 몇 가지 이유가 거기되지 않습니다 :

    나는 소스는 스칼라의 추상 클래스 이상의 특성을 선호해야한다는 주장에 대해 무엇인지 모르겠지만, 몇 가지 이유가 거기되지 않습니다 :

    마지막 이유는 내보기에 지금까지 가장 중요한 것입니다. 적어도 다른 문제의 부부 스칼라의 향후 버전에서 해결받을 수 있지만, 클래스 디폴트 것은 (틀림없이 적어도) 좋은 디자인과 일치하는 방식으로 프로그램을 제한 할 것이라는 경우 유지됩니다. 당신이 실제로 당신을 결정하면 정말 특성에 의해 제공되는 전원, 그들은 여전히있을거야 싶어,하지만 당신이 만드는 결정, 당신은 단지에 미끄러하지 뭔가있을 것입니다.

    그래서, 다른 정보가없는 경우에, 나는 추상 클래스 (이상적으로 밀봉 한) 및 구현을 제공하는 두 개의 구체적인 클래스를 사용하는 것이 좋습니다 것이다.

  2. ==============================

    2.OTOH, 특성은 구축하고 세분화 된 방식으로 복잡한 객체의 기능을 테스트하고 다른 맛을 제공하기 위해 핵심 로직을 재사용 할 수 있습니다. 예를 들어, 도메인 객체는 웹 서버 힘의 고용은 읽기 전용 동안 데이터베이스에이 지속, 데이터 서버에서 업데이트됩니다 동일한 개체의 버전을 데이터 서버에 배포 할 수 있습니다.

    OTOH, 특성은 구축하고 세분화 된 방식으로 복잡한 객체의 기능을 테스트하고 다른 맛을 제공하기 위해 핵심 로직을 재사용 할 수 있습니다. 예를 들어, 도메인 객체는 웹 서버 힘의 고용은 읽기 전용 동안 데이터베이스에이 지속, 데이터 서버에서 업데이트됩니다 동일한 개체의 버전을 데이터 서버에 배포 할 수 있습니다.

    아무것도 모든 시나리오에 적합하지 않습니다. 손 작업에 적합한 구조를 사용합니다. 때로는 구현의 현실은 디자인 타임에 알려지지 않은 특정 사용 사례에 대한 조명 문제로 제공합니다. 놀라운 결과를 얻을 수있는 다른 가정 및 구조를 사용하여 재 - 구현.

  3. from https://stackoverflow.com/questions/35249901/scala-client-composition-with-traits-vs-implementing-an-abstract-class by cc-by-sa and MIT license