RE: Come iniettare funzionalità in classi esis?

Alla fine è un po’ come chiedersi, “perché esistono le interfacce in> Java se si può ereditare”?

Perché puoi ereditare da una sola classe, ma implementare 10mila interfacce.
Il punto è anche che in java non puoi riaprire la classe per aggiungerne
metodi, qui si.
A me interesserebbe sapere se oltre a motivi filosofici ci sono anche
quelli tecnici,
ma proprio nel weekend ho fatto un plugin che applica questo principio e
funziona una bomba…
quindi credo non ce ne siano.

On Jul 25, 2006, at 10:06 AM, Giuliano U. wrote:

Il punto è anche che in java non puoi riaprire la classe per
aggiungerne metodi, qui si.
A me interesserebbe sapere se oltre a motivi filosofici ci sono
anche quelli tecnici,
ma proprio nel weekend ho fatto un plugin che applica questo
principio e funziona una bomba…
quindi credo non ce ne siano.

Il motivo “filosofico” te lo spiego con un esempio, riprendendo il tuo:

module MyExtension
def self.append_features(base)
super
base.extend ClassMethods
end

module ClassMethods
def my_method(data)

end
end
end

class ActiveRecord::Base
include MyExtension
end

class
MyClassWhichIsACompleteAndTotallyCompatibleReplacementForActiveRecord
include MyExtension
end

spero di essere stato chiaro :slight_smile:


Stefano C.
[email protected]