目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

テスト駆動開発入門をRubyで写経してみた。8

8章で実施したこと

  • ファクトリメソッドパターンを適用し、サブクラスへの参照を減少させた

money.rb

#!/usr/bin/ruby
#coding: utf-8
# テスト駆動開発入門8章 オブジェクトの生成
class Money
  attr_accessor :amount
  protected :amount

  def ==(other)
    return @amount == other.amount && self.class == other.class
  end

  def self.franc(amount)
    return Franc.new(amount)
  end

  def self.dollar(amount)
    return Dollar.new(amount)
  end
end

class Dollar < Money
  def initialize(amount)
    @amount = amount
  end

  def *(multiplier)
    return Dollar.new(@amount * multiplier)
  end
end

class Franc < Money
  def initialize(amount)
    @amount = amount
  end

  def *(multiplier)
    return Franc.new(@amount * multiplier)
  end
end

money_test.rb

#!/usr/bin/ruby
#coding: utf-8
# テスト駆動開発入門8章 オブジェクトの生成
class Money
  attr_accessor :amount
  protected :amount

  def ==(other)
    return @amount == other.amount && self.class == other.class
  end

  def self.franc(amount)
    return Franc.new(amount)
  end

  def self.dollar(amount)
    return Dollar.new(amount)
  end
end

class Dollar < Money
  def initialize(amount)
    @amount = amount
  end

  def *(multiplier)
    return Dollar.new(@amount * multiplier)
  end
end

class Franc < Money
  def initialize(amount)
    @amount = amount
  end

  def *(multiplier)
    return Franc.new(@amount * multiplier)
  end
end