最近在学习Ruby,由于此前一直使用Java,他的面向接口编程的理念对我影响颇深,所以对Ruby的Mix-in的多继承方式有种种的疑问。现假设有这一场景:一父类(或抽象类或接口)< 内容>,两个子类 <文章>和<评论>,他们都继承了<内容>的<读>方法,Java中我们可以定义一个接口<内容>,然后两个子类分别实现这个接口,再重写<读>方法(根据读取的内容而不同的操作),在编写调用类中,直接针对<内容>这个接口编写就行,在程序运行时根据实际给我们的<文章>或是<评论>的子类而动态调用各自的<读>方法,从而实现多态性。而Ruby的Mix-in则不然,Mix-in是把具体实现功能直接写在Module中,然后哪个类需要这种具体功能就把Module include进来。在我看来Ruby的类和Module是的的确确的"继承"(强耦合关系),这对于减少耦合程度提高扩展性的设计方式来说有诸多不利。Java中interface是一个标准,我们很多时候都是针对标准去开发,减轻了程序的复杂性。在Ruby里面有这种根据标准的方式去编程吗?假如没有标准的话,像上述的编程场景,Ruby可以在<文章>类的读方法是readArticle,在<评论>类方法里是readComment,这样的代码也不好维护,而且就Module的Mix-in方式来说,如有某些功能例如在插入后要调用类的其他方法,会在Module里写self.otherMethod,这不就是在设计时候就需要了解类的内部吗?之前也写过PHP(伪面向对象),感觉本身对动态语言的设计方式有许多的不解,请各位大大调教