2

RubyでDCIをコーディングする正しい方法に従って、DCIをいじってみました。自分のロールでデータオブジェクトにプロパティを追加したいと思っています。

たとえば、ユーザーオブジェクトがある場合。

class User
  def initialize(name)
    @name = name
  end
end

user = User.new('JonMR')

ユーザーは顧客の役割を果たすことができます。

module Customer
  def add_to_cart(item)
    self.cart << item
  end
end

customer = user.extend Customer
customer.add_to_cart 'an item'

これを機能させるには、カートメソッドを追加する必要があります。ショッピングカートは本当にユーザーオブジェクトに属していますか?役割は、必要に応じてカートをデータオブジェクトに追加する必要があるように感じます。

4

1 に答える 1

2

一般に、DCIデータオブジェクトは、データと、基本的な検証ロジックなどの非常に基本的なドメインロジックのみで構成されている必要があります。そして、DCIの役割は純粋に振る舞いでなければなりません。ある役割のユーザーにカートを追加することは、その秒の違反のように感じます。たぶん、データオブジェクトタイプまたはロールが不足していますか?ロールはコンテキストから他のロールを使用できることを忘れないでください。したがって、おそらくあなたのロールは、カートの役割を果たしているオブジェクトが現在のコンテキストの一部であることを期待する必要があります。

于 2012-07-13T05:04:30.377 に答える