Geçtiğimiz birkaç yıl içinde ben her zaman sorunlara neden görünüyor bizim nesne hiyerarşisi içinde benzer bir sorun haline çalıştırmak projeler üzerinde oldum. Herkes burada klasik bir OOP (Java, C #, PHP5, vb) incelikle bu durumu ele verebilir tasarım deseni biliyordum merak ettim.
Varolan bir sistemi var demek. Bu sistem, diğer şeyler arasında, işletmelerin iki tür, tek bir sınıf ile modellenen her sahiptir. Diyelim ki
Müşteri
SalesRepresentative
Tarihsel nedenlerden dolayı, bu sınıfların hiçbiri aynı temel sınıfından ya da ortak bir arabirimi paylaşacak.
The problem I've seen is, inevitably, a new feature gets specced out that requires us to treat the Müşteri ve the SalesRepresentative as the same type of Object. The way I've seen this hveled in the past is to create a new class that includes a member variable for both, ve then each method will operate on the objects differently depending on which is set
//pseudo PHPish code
class Participator
{
public $customer;
public $salesRepresentative;
public function __construct($object)
{
if(object is instance of Müşteri)
{
$this->customer = $object;
}
if(object is instance of SalesRepresentative)
{
$this->salesRepresentative = $object;
}
}
public function doesSomething()
{
if($customer)
{
//We're a customer, do customer specific stuff
}
else if($salesRepresentative)
{
//We're a salesRepresentative, do sales
//representative specific stuff
}
}
}
Durum bu tür işleme daha zarif bir yolu var mı?