有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象工厂
  1 class System{}
  2 class Soft{}
  3 
  4 class MacSystem extends System{}
  5 class MacSoft extends Soft{}
  6 
  7 class WinSystem extends System{}
  8 class WinSoft extends Soft{}
  9 
 10 /**
 11  * AbstractFactory class[抽象工厂模式]
 12  */
 13 interface AbstractFactory {
 14     public function CreateSystem();
 15     public function CreateSoft();
 16 }
 17 
 18 class MacFactory implements AbstractFactory{
 19     public function CreateSystem()
 20     {
 21         // TODO: Implement CreateSystem() method.
 22         return new MacSystem();
 23     }
 24     public function CreateSoft()
 25     {
 26         // TODO: Implement CreateSoft() method.
 27         return new MacSoft();
 28     }
 29 }
 30 有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象工厂
 31 class System{}
 32 class Soft{}
 33 
 34 class MacSystem extends System{}
 35 class MacSoft extends Soft{}
 36 
 37 class WinSystem extends System{}
 38 class WinSoft extends Soft{}
 39 
 40 /**
 41  * AbstractFactory class[抽象工厂模式]
 42  */
 43 interface AbstractFactory {
 44     public function CreateSystem();
 45     public function CreateSoft();
 46 }
 47 
 48 class MacFactory implements AbstractFactory{
 49     public function CreateSystem()
 50     {
 51         // TODO: Implement CreateSystem() method.
 52         return new MacSystem();
 53     }
 54     public function CreateSoft()
 55     {
 56         // TODO: Implement CreateSoft() method.
 57         return new MacSoft();
 58     }
 59 }
 60 
 61 class WinFactory implements AbstractFactory{
 62     public function CreateSystem()
 63     {
 64         // TODO: Implement CreateSystem() method.
 65         return new WinSystem();
 66     }
 67 
 68     public function CreateSoft()
 69     {
 70         // TODO: Implement CreateSoft() method.
 71         return new WinSoft();
 72     }
 73 }
 74 
 75 //test
 76 $MacFactory_obj = new MacFactory();
 77 var_dump($MacFactory_obj->CreateSystem());
 78 var_dump($MacFactory_obj->CreateSoft());
 79 
 80 $winFactory_obj = new WinFactory();
 81 var_dump($winFactory_obj->CreateSystem());
 82 var_dump($winFactory_obj->CreateSoft());
 83 
 84 
 85 class WinFactory implements AbstractFactory{
 86     public function CreateSystem()
 87     {
 88         // TODO: Implement CreateSystem() method.
 89         return new WinSystem();
 90     }
 91 
 92     public function CreateSoft()
 93     {
 94         // TODO: Implement CreateSoft() method.
 95         return new WinSoft();
 96     }
 97 }
 98 
 99 //test
100 $MacFactory_obj = new MacFactory();
101 var_dump($MacFactory_obj->CreateSystem());
102 var_dump($MacFactory_obj->CreateSoft());
103 
104 $winFactory_obj = new WinFactory();
105 var_dump($winFactory_obj->CreateSystem());
106 var_dump($winFactory_obj->CreateSoft());   

 

posted on 2019-09-17 22:04  caohongchang  阅读(162)  评论(0编辑  收藏  举报