Kendim için bir alıştırma olarak, bir örnek programı çeşitli dillere çeviriyordum. C# başlayarak, ben bir ziyaretçinin desenli arayüzü şöyle oldu:Dinamik dilde ziyaretçi kalıbını uygulamak için tercih edilen yol?
interface Visitor
{
void Accept(Bedroom x);
void Accept(Bathroom x);
void Accept(Kitchen x);
void Accept(LivingRoom x);
}
yakut taşıma
(veya piton, ya da her neyse), artık türüne göre derleyici sevkini olsun. Ziyaretçiyi ziyaretçinin kendisinde yapmalı mıyım?
class Cleaner
def accept(x)
acceptBedroom(x) if Bedroom === x
acceptBathroom(x) if Bathroom === x
acceptKitchen(x) if Kitchen===x
acceptLivingRoom(x) if LivingRoom===x
end
...
Ya odanın farklı specializaions içinde sevk yapmalıdır:
class Bathroom<Room
def initialize(name)
super(name)
end
def accept(visitor)
visitor.acceptBathroom(self)
end
end
Ya dinamik dilde kullanılan başka tercih deyim vardır?