Nie mogę znaleźć w miarę sensownego i po polsku (ang w ostateczności) porównania wzorca Abstract Factory i Factory Method
Możecie mi to wytłumaczyć na przykładzie albo jakieś linki po polsku?
pozdrawiam
<?php class DatabaseFactory { private function __construct(){} { require_once('Core/Cube/Database/' . Config::$DbType . '/' . Config::$DbType . '.class.php'); return new Config::$DbType(); } } ?>
<?php abstract class DatabaseFactory { { require_once('Core/Cube/Database/' . Config::$DbType . '/' . Config::$DbType . '.class.php'); return new Config::$DbType(); } } ?>
<?php interface Render { abstract function render(); } class HTMLView implements Render { public function render(){ } } class PDFView implements Render { public function render(){ } } class NewsFactory { switch($view){ case 'HTML': return new HTMLView; break; case 'PDF': return new PDFView; break; default: throw new Exception('Brak modulu widoku.'); break; } } } try{ $oView = NewsFactory::getView('PDF'); }catch(Exception $exception){ } $oView->render(); ?>
<?php abstract class NewLine { abstract public function getNl(); } abstract class SystemManager { abstract public function getNlSystem(); } class WinNl extends NewLine { public function getNl(){ return "r\n"; } } class UnixNl extends NewLine { public function getNl(){ return "\n"; } } class WinManager extends SystemManager { public function getNlSystem(){ return new WinNl; } } class UnixManager extends SystemManager { public function getNlSystem(){ return new UnixNl; } } $oSystemManager = new UnixManager; $oNlSystem = $oSystemManager->getNlSystem(); ?>
<?php class DB_Abstraction_AbstractFactory implements iAbstractFactory { private function __construct() { } } ?>
<?php $abstractfactory = new DB_Abstraction_AbstractFactory(); ?>