SOLID İlkesini korurken Denetleyici Deposu ile Denetleyici kullanımı hakkında bir kafa karışıklığım var. Ben ÖzlüSOLID İlkesi Havuz Kalıbı İle Laravel
- Ticari Teklif
- Özel Teklif
Ve gelecekte alıntılarla yeni tip yüksek şans iki tür var düşünün. Her Teklifin farklı alanları vardır, iş mantığı vardır, ancak birçok ortak işlevi paylaşırlar. Bu yüzden bir QuotationInterface
Tırnak Inteface Interface
class CommercialQuotation implements QuotationInterface
{
public function(array $data)
{
// save commercial quotation
}
}
class PrivateQuotation implements QuotationInterface
{
public function(array $data)
{
// save Private quotation
}
}
Tırnak Deposu uygulamak
interface QuotationInterface
{
public function save(array $data);
}
Tırnak sınıfı yarattı
class QuotationRepository
{
public function save(array $data, QuotationInterface $quotation)
{
$quotation->save($data);
}
}
QotationController İşte benim QuotationController içinde
public function store(Resource $resource)
{
$inputs = $resource->all();
/**
* Clearly here Open/Close Principle is broken
*/
if ($inputs['type'] == 'private'){
$quotation = new PrivateQuotation;;
}
else if($inputs['type'] == 'commercial'){
$quotation = new CommercialQuotation;
}
$this->repo->save($inputs, $quotation);
}
, açıkça
tırnak her türü için Kontrolör oluşturma iyi bir fikir mi .. Aç/Kapat İlke ihlal ( olabilir 10+ bir gün, kim bilir?) OCP ihlalinden kaçınmak için tasarımım yanlış mı? Herhangi bir öneri, tasarım değişikliği ipuçları, kaynak açıktır.NOT: Teklifim Denetçisi, yalnızca kaydetme dışında birçok başka işleve sahip olacaktır.
Örneğini takip edeceğim. Teşekkürler. –
Fabrikayı değiştirme ihtiyacı, Açık/Kapalı İlkesinin klasik bir ihlalidir: bu, kodun değiştirilmeye kapalı olmadığı anlamına gelir. Aslında, anahtar/vaka her zaman bir OCP ihlalidir, bu nedenle GoF Fabrikası Yöntemi tasarım modeline dahil değildir. Tasarım deseni, polimorfizme dayanmaktadır. – jaco0646
@ jaco0646: Tasarım kalıpları mutlak kurallar değildir, ancak bunları gerçek duruma uydurmak önemlidir. Böyle bir durumda basit bir fabrika iyi bir çözüm olabilir.Gönderiimin sonunda ortaya çıktığım gibi, uygulamanın mimarisine bağlı olarak, bir soyut fabrika veya fabrika yöntemi – Moppo