PHP设计模式之抽象工厂(AbstractFactory)

<?php
 /*我的抽象工厂比较枯燥,而且是本人还是新手,请多多包涵*/

 /*两种必然需要的组件,一个是A,一个是B*/
 interface ProductA{
  public function Printf();
 }
 interface ProductB{
  public function Printf();
 }
 
 /*产品族1,包含A1、B1两个产品的1族*/
 class ProductA1 implements ProductA{
  public function Printf(){
   echo "this is A1!<br/>";
  }
 }
 class ProductB1 implements ProductB{
  public function Printf(){
   echo "this is B1!<br/>";
  }
 }
 
 /*产品族2,包含A2、B2两个产品的2族*/
 class ProductA2 implements ProductA{
  public function Printf(){
   echo "this is A2!<br/>";
  }
 }
 class ProductB2 implements ProductB{
  public function Printf(){
   echo "this is B2!<br/>";
  }
 }
 
 /*抽象工厂,声明了两种方法,分别为:生产A、生产B*/
 interface Creator{
  public function aFactory();
  public function bFactory();
 }
 
 /*负责产品族1的产品的工厂,里面生产了A和B两个产品,但是都是1族的*/
 class Creator1 implements Creator{
  public function aFactory(){
   return new ProductA1();
  }
  public function bFactory(){
   return new ProductB1();
  }
 }
 
 /*负责产品族2的产品的工厂,里面生产了A和B两个产品,但是都是2族的*/
 class Creator2 implements Creator{
  public function aFactory(){
   return new ProductA2();
  }
  public function bFactory(){
   return new ProductB2();
  }
 }
 
 function Client(){
  /*决定需要哪一族的产品,这里需要1族的产品*/
  $creator = new Creator2();
  $productA = $creator->aFactory();
  $productB = $creator->bFactory();
  $productA->Printf();
  $productB->Printf();
 }
?>
<?php
 Client();
?>

 

你可能感兴趣的:(抽象工厂,PHP)