委譲の隠蔽(Hide Delegate)

リファクタリングすべき時

クライアントがオブジェクト内の委譲クラスを呼び出している。

リファクタリングする理由

変更の影響が及ぶのがサーバーまでに限られ、クライアントには影響が及ばなくなる。

◯ テストコード

# rspec

describe Person do
  let(:person){ Person.new }

  describe 'manager' do
    let(:department){ Department.new('manager-name') }
    before do
      person.department = department
    end
    subject{ person.department.manager }
    it{ should == 'manager-name' }
  end
end

※参考資料
 リファクタリング:Rubyエディション