0
在我開始寫週末代碼之前,我正在玩Ruby中強制類關係的方法。我在嘗試一種複合關係,但是我有一些對Commodity類以外的PriceSeries類的控制。從實例方法實例化組合類Ruby
顯然這不是,但是有沒有這樣的設置的理由?我是否認爲這會爲私人數據創造價值,並且可能適合存儲用戶實例的密碼?
class ExcelFile
def initialize(name)
@name = name
end
end
class Commodity
def initialize(name)
@name = name
end
def new_price_series(name, source)
name = PriceSeries.new(name, source)
end
class PriceSeries
attr_accessor(:name) #Without this line, is there any point of this class??
def initialize(name, source)
@source = source
@name = name
end
end
end
mm8_prices = ExcelFile.new("some_exlsx_file")
gold = Commodity.new("gold")
gold.new_price_series(:xau, mm8_prices)
有什麼區別? (我只使用ruby/python/php和javascript)。我想在編碼時明確說明一個PriceSeries實例化屬於一種商品,如果沒有一個商品就不能存在 - 但商品可以不存在價格系列。另外,噸[這裏可以是許多PriceSeries每個商品。我想我實際上已經找到了一種方法來使用元編程來在PricePoint對象的Commodity類中創建實例方法。這是做這件事的好方法嗎? – 2015-02-10 21:51:57
在你的例子中,你只需定義一個名爲Commodity :: PriceSeries的類。 Commodity和PriceSeries或它們的實例之間沒有特別的關係 - PriceSeries可以使用Commodity :: PriceSeries.new(name,source)通過Commodity之外的代碼實例化。要強制執行關係,請將商品實例傳遞給PriceSeries構造函數。您的Commodity實例還可以維護一組PriceSeries實例。這是標準的OO,不應該需要任何元編程。 – silvabox 2015-02-11 07:53:40