4

私は新しい Ruby ですが、長年 .net 開発者でした。いくつかのモデル内でコンポジションを実装して、それらが可能な限り疎結合であることを確認したいのですが、どこから始めればよいのか、またはこれが本当に必要なのかどうか、まだ .net 開発者のように考えています。

どこから始めればよいか、誰かが私にいくつかの指針を教えてもらえますか。

乾杯コリン G

4

2 に答える 2

8

こういうことですか?

クラス エンジン
    attr_reader :馬力、:リットル
終わり

クラスギアボックス
    attr_reader :manufacturer、:model_no
終わり

クラスカー
    def initialize(エンジン、ギアボックス)
        !engine.kind_of(Engine) の場合、「無効なエンジン オブジェクト」を発生させます
        !gearbox.kind_of(Gearbox) の場合、「無効なギアボックス オブジェクト」を発生させます
        @engine = エンジン
        @ギアボックス = ギアボックス
    終わり
終わり


car = Car.new(Engine.new, Gearbox.new)
于 2010-05-27T11:45:52.957 に答える
2

Ruby はオブジェクト指向ですが、動的に型付けされる言語です。動的言語であるため、ルビストは .net 開発者よりもリフレクションとコードの動的変更を使用する傾向があります。もちろん、これはオブジェクト指向言語であるため、.net とほとんど同じ原則を使用できますが、同じことをより動的な方法で実装する方法を常に調べてください。

たとえば、ActiveRecord ORMは、適切なフィールドとプロパティをクラスに動的に追加する composer_ofメソッドを使用して合成を解決します。これがそうあるべきだと言っているのではありません (たとえば、Ruby の別の ORM である DataMapper は、より「保守的な」アプローチを選択するため、(Fluent)NHibernate に似ています)、これは単なる例です。物事がどのように異なる方法で行われるか。

AOP や DI などは、動的言語にとって異質な概念ではなく、通常は別の方法で行われます。言語の動的な側面に心を開いてください。ただし、無理をしないでください。

于 2010-05-26T21:52:35.243 に答える