2012-07-24 35 views
1

我打算給不同的類別提供不同的邏輯,我不知道是否應該製作20種不同的模型,或者如果我只有一個StoreCategory模型並將邏輯放在那裏。一些邏輯會很小,而其他的則很大。什麼應該是具有不同邏輯的類別的模型設計?

所以,如果我有不同的商店類別,如折扣,在線,交付,零售等,並希望給他們自己的特殊邏輯,我該怎麼辦?

回答

2

這是一個很好的問題。在你的地方,我會創建一個類「Category」,而我的其他類從第一個繼承。在Category類中,我會將共享代碼和特定代碼放在子類中。如果有必要,你可以使用多態關聯。這只是一個想法。

編輯1:添加的代碼示例

class StoreCategory < ActiveRecord::Base 

    before_save :something_private 

    def a_public_function 
    #... 
    end 

    protected 
    def a_protected_function 
     #... 
    end 

    private 
    def something_private 
     #something after save 
    end 
end 

class DiscountCategory < StoreCategory 
    def my_first_function 
    #I could use a_public_function and a_protected_function 
    end 
end 

class OnlineCategory < StoreCategory 
    def a_protected_function 
    #I could use a_public_function 
    #I could override a_protected_function 
    #I could use super to run the Category's function 
    end 
end 

功能something_private之後被叫保存每個子類。我認爲這是明確的和有組織的。它像ApplicationController類一樣工作。

+0

另一種方式:mixins。 – 2012-07-24 12:42:20

+0

我很困惑這個設計。所以'StoreCategory'就是你所指的'Category',然後我製作一個類似於'DiscountStoreCategory','RetailStoreCategory'或任何其他商店類別的模型?所以我必須根據什麼做一個模型如果我需要邏輯或不是? – LearningRoR 2012-07-24 13:04:54

+0

我在我的回答中添加了代碼 – Dougui 2012-07-24 13:15:03

相關問題