и почему?
                  
                  
                  
                  
                  
                  Первый:
                  
                  
                  sealed trait Behavior
                  
                  
                  object Behavior {
                  
                  
                    case object Append extends Behavior
                  
                  
                    case object Remove extends Behavior
                  
                  
                  }
                  
                  
                  trait Service[F[_]] {
                  
                  
                    def decide: F[Behavior]
                  
                  
                  }
                  
                  
                  
                  
                  
                  Второй:
                  
                  
                  trait Behavior[F[_]] {
                  
                  
                    def append: F[Unit]
                  
                  
                    def remove: F[Unit]
                  
                  
                  }
                  
                  
                  trait Service[F[_]] {
                  
                  
                    def decide: F[Unit]
                  
                  
                  }
                  
                  
                  class SomeServiceImpl[F[_]: Behavior] extends Service { ... }
                  
                  
                
Ну я бы не сказал, что одно строго преобладает над другим
варианты неравнозначны. первый подразумевает только декларацию поведения, а второй и самое поведение тоже. я бы предпочел первый потому что, предствим что в моем случае, я ничего не делаю после выбора поведения, а просто сохраняю его в БД.
Обсуждают сегодня