Hallo,

In OOP heb je te maken met design patterns. Ik snap bijna nooit waarom er sommige design patterns zijn, wat ze doen, en waarom ze soms zo goed in te bouwen zijn.
Bijvoorbeeld deze begrijp ik niet:

- Adapter pattern. Het Adapter-patroon wordt gebruikt om de interface van de ene klasse om te zetten in de interface van een andere klasse.
Adapter kan twee klassen laten samenwerken die anders niet zouden samenwerken door hun verschillende interfaces.


- Factories, zegt me heel weinig.
- Bridges, volgens mij niet echt vaak gebruikt.

Als iemand al eens eentje kon uitleggen.
Alvast bedankt.
Voor een adapter pattern: denk aan een stroom adapter. Een Nederlandse stekker proberen te gebruiken in een Amerikaans hotel, dat lukt je niet zonder een adapter. Datzelfde patroon (pattern) kan je soms ontdekken bij classes.

Stel ik heb een class die bestanden weg kan schrijven en andere classes maken daar gebruik van. De interface van die class ziet er simpel uit:

<?php
interface Bestand_Schrijver{
  public function schrijfWeg();
}
?>

Alleen morgen ga ik over op een class van iemand anders en die kent deze methode:

<?php
public function write();
?>

Om niet al mijn classes te hoeven omschrijven die mijn oorspronkelijke schrijver gebruikte, maak ik nu een adapter die de overstap maakt:

<?php
class Schrijver_Adapter implements Bestand_Schrijver{
  private $newWriter;

  public function schrijfWeg(){
    $this->newWriter->write();
  }
}
?>

Probleem opgelost. Al mijn oude classes hoef ik niet te veranderen, maar door deze adapter kan ik wel de nieuwe writer class gaan gebruiken.
Je hebt heel veel design patterns. Een design pattern is er om een ontwerp probleem op te lossen. Naast een design pattern heb je ook ANTI patterns welke ook een ontwerp probleem oplossen maar dan op een "dirty way" die je eigenlijk niet zou moeten gebruiken omdat het tegen alle OO principes ingaat meestal ( singleton is daar een voorbeeld van)

Je hebt 3 soorten design patterns

Creational
Behavioral
Structural

De adapter pattern die Erwin uitlegt (en de Bridge pattern) valt onder de Structural patterns omdat deze structuur geeft aan je applicatie of delen daarvan. Een creational pattern is bedoeld om voor jou objecten of instanties aan te maken. bijvoorbeeld de Factory pattern welke jij opnoemt. Verder heb je de Behavioral patterns waar de Strategy pattern bijvoorbeeld onder valt.

Ik zou er zo een boek over kunnen schrijven om alle patterns uit te leggen dus mocht je een specifieke vraag hebben over een ontwerp dan moet je die stellen en anders gewoon alle patterns afgaan en lezen->toepassen om te begrijpen.
Reshad F op 28/11/2013 17:32:16

Je hebt 3 soorten design patterns

Creational
Behavioral
Structural

Bij PHP (met één lineair proces) zul je ze niet snel tegenkomen, maar je hebt ook nog concurrency patterns voor design patterns die een vorm van multi-threading, multi-tasking en multi-processing beschrijven.

Reageren