View difference between Paste ID: V0HS6fU2 and jDXNB8de
SHOW: | | - or go back to the newest paste.
1
<?php
2
3
// constructor abstracto
4
abstract class AbstractFactory
5-
    // el tipo que devolverá esta función factory será ejemplo abstracto
5+
6-
    abstract public function FactoryMethod(...$params);
6+
    // el tipo que devolverá esta función factory será EjemploAbstracto
7
    abstract public function FactoryEjemplo(...$params);
8
    // el tipo que devolverá esta función factory será OtroEjemploAbsracto
9
    abstract public function FactoryOtroEjemplo(...$params);
10
}
11
12-
    public function FactoryMethod(...$params)
12+
13
class ConstructorConcreto extends AbstractFactory
14
{
15
    public function FactoryEjemplo(...$params)
16
    {
17
        return new EjemploConcreto(...$params);
18
    }
19
    
20
    public function FactoryOtroEjemplo(...$params)
21
    {
22
        return new OtroEjemploConcreto(...$params);
23
    }
24
}
25
26
// ejemplo abstracto
27
abstract class EjemploAbstracto { }
28
29
// otro ejemplo abstracto
30
abstract class OtroEjemploAbstracto { }
31
32-
$ejemplo = $factory->FactoryMethod();
32+
33
34
class EjemploConcreto extends EjemploAbstracto
35
{
36
    public function __construct()
37
    {
38
        //...
39
    }
40
}
41
42
// otro ejemplo concreto
43
44
class OtroEjemploConcreto extends OtroEjemploAbstracto
45
{
46
    public function __construct()
47
    {
48
        //...
49
    }
50
}
51
52
$factory = new ConstructorConcreto();
53
$ejemplo = $factory->FactoryEjemplo();
54
$otroEjemplo = $factory->FactoryOtroEjemplo();
55
56
// crear otros ejemplos
57
$factory2 = new ConstructorConcreto();
58
$ejemplo2 = $factory->FactoryEjemplo();
59
$otroEjemplo2 = $factory->FactoryOtroEjemplo();