Ruby Rails设计困境:相同的算法,不同的类
我正在进行我的第一个RubyonRails项目,现在我面临着一个设计难题。我不是专业的程序员,所以我可能会错过一些基本的东西。请容忍我 我的项目是模拟选举制度。我有(除其他外)这些模型Ruby Rails设计困境:相同的算法,不同的类,ruby,ruby-on-rails-3,pointers,multiple-inheritance,Ruby,Ruby On Rails 3,Pointers,Multiple Inheritance,我正在进行我的第一个RubyonRails项目,现在我面临着一个设计难题。我不是专业的程序员,所以我可能会错过一些基本的东西。请容忍我 我的项目是模拟选举制度。我有(除其他外)这些模型 class Town < ActiveRecord::Base attr_accessible :census, :name has_many :results has_many :parties, :through => :results belongs_to :region end
class Town < ActiveRecord::Base
attr_accessible :census, :name
has_many :results
has_many :parties, :through => :results
belongs_to :region
end
class Party < ActiveRecord::Base
attr_accessible :acronym, :name
has_many :results
has_many :towns, :through => :results
end
class Result < ActiveRecord::Base
attr_accessible :party, :town, :votes, :year
belongs_to :town
belongs_to :party
end
class-Town:结果
属于:地区
结束
类Party:结果
结束
类结果
城镇和政党这两个类别都将有一种方法席位(),计算席位的算法(分别来自:人口普查
或:投票
)基本相同。我希望能够以一种可以应用于任何一种情况的方式对算法进行编码
我想到了各种解决办法:
- 编写泛型函数的代码,并向其传递指向所需类的指针。这有一个问题,在一种情况下是
,在另一种情况下是:普查
,我不知道在RoR中管理它有多容易。我也可以传递一个指向该列的指针吗?听起来不太红:投票
- 从定义算法的公共类继承。然后我就失去了ActiveRecord的功能,它实际上非常方便。或者我会
- 创建一个通用算法,并相应地从特定于类的方法向其提供原始数据数组。这意味着我必须为每个类分别编写数据接口
您会实施这些选项中的任何一个吗?它们各自的优点/缺点是什么?有没有一个标准的方法来解决这个问题 所以,有混合的选择,我不知道。谢谢你的评论。是否有一种方法可以使模块使用:普查或:投票?是的,将所有常用方法移动到一个模块中,然后
包含它们,这是标准做法。理想情况下,模块中的代码应该尽可能地不可知和模块化,以便创建尽可能少的耦合。