Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/10/2015, 11:53
Avatar de mortiprogramador
mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 4 meses
Puntos: 214
Respuesta: Framework, para POO

Saludo
Pues en ese caso, ataquemos a Factory.

Ej
Vamos a generar códigos para diferentes tipos de artículos para una tienda.

Así por ej tendremos artículos de Aseo, de Miscelanea, etc.
También necesitaremos un generador de códigos genérico,
que solo se encargue de informarnos cual es el artículo a usar.
Y finalmente necesitaremos un pivot (Factory) entre el genérico
y el artículo que manejaremos.

Llevando este ejemplo a clases, sería.
1. Crear una clase abstracta para el genérico.
2. Crear las clases para cada tipo de artículo, las cuales extenderán de la clase abstracta.
3. Crear la clase pivot (Factory) que comunicará el punto 1 con el punto 2
para poder hacer uso de distintos tipos de artículos.

Llevando esto a código

Código PHP:
Ver original
  1. abstract class GenericCodeComponent
  2. {
  3.        
  4.         public function getCode()
  5.         {
  6.            
  7.         }
  8. }
  9.    
  10.     //Aseo
  11.     class CleanLinessCodeComponent extends GenericCodeComponent
  12.     {
  13.         public function getCode()
  14.         {
  15.             return 'CleanLiness-1';
  16.         }        
  17.     }
  18.    
  19.     //Miscelanea
  20.     class MiscellaneousCodeComponent extends GenericCodeComponent
  21.     {
  22.         public function getCode()
  23.         {
  24.             return 'Miscellaneous-2';
  25.         }
  26.     }
  27.    
  28.     class GenericCodeComponentFactory
  29.     {
  30.         public static function createGenericCodeComponent($type)
  31.         {
  32.             $baseClass = 'GenericCodeComponent';
  33.             $baseComponent = 'CodeComponent';
  34.             $targetClass = $type.$baseComponent;
  35.            
  36.             if( class_exists($targetClass) && is_subclass_of($targetClass, $baseClass) )
  37.                 return new $targetClass;
  38.             else
  39.                 return 'Type '.$type.' not found.';
  40.         }
  41.     }
  42.    
  43.     $components = array('CleanLiness','Miscellaneous');
  44.     foreach ($components as $component)
  45.         echo '</br>'.GenericCodeComponentFactory::createGenericCodeComponent($component)->getCode();

Ese es un ejemplo, y como se puede apreciar, solo son clases
que extienden unas de otras, y una final que se encarga de fabricarlas.

Y es válido para cualquier framework, así que adelante, es cuestión
de adaptar esto en tu caso a CodeIgniter, pero ya no te será tan
complicado, pues ellos ya manejan el paradigma POO.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 30/10/2015 a las 16:06