php抽象工厂模式的研究

上一节理解了工厂模式。其代码原理如下:

<?php

abstract class ApptEncoder{
    abstract function encode();
}

class BloggsApptEncoder extends ApptEncoder{
    function encode(){
        return "data encode farmat";
    }
}

abstract class CommsManager{
    abstract function getHeaderText();
    abstract function getApptEncoder();
    abstract function getFootText();
}

class BloggsCommsManager extends CommsManager{
    function getHeaderText(){
        return "header";
    }
    function getApptEncoder(){
        return new BloggsApptEncoder();
    }
    function getFooterText(){
        return "footer";
    }
}

 

 

然后抽象工厂模式只是在工厂模式基础上进行升级,具体如下:

 1 <?php
 2 
 abstract class ApptEncoder{
     abstract function encode();
 }
 
 7 class BloggsApptEncoder extends ApptEncoder{
 8     function encode(){
 9         return "data encode format appt";
10     }
11 }
12 

  abstract class TdcEncoder{
    
abstract function encode();
}
13 class BloggsTdcEncoder extends TdcEncoder{ 14 function encode(){ 15 return "data encode format tdc"; 16 } 17 } 18
  abstract class ConEncoder{  
    
abstract function encode();
} 19 class BloggsConEncoder extends ConEncoder{ 20 function encode(){ 21 return "data encode format con"; 22 } 23 } 24 25 26 abstract class CommsManager{ 27 abstract function getHeaderText(); 28 abstract function getApptEncoder(); 29 abstract function getFootText(); 30 31 abstract function getTdcEncoder(); 32 abstract function getConEncoder(); 33 } 34 35 class BloggsCommsManager extends CommsManager{ 36 function getHeaderText(){ 37 return "header"; 38 } 39 function getApptEncoder(){ 40 return new BloggsApptEncoder(); 41 } 42 function getFooterText(){ 43 return "footer"; 44 } 45 46 47 function getTdcEncoder(){ 48 return new BloggsTdcEncoder(); 49 } 50 51 function getConEncoder(){ 52 return new BloggsConEncoder(); 53 } 54 }

 

具体原理就是在工厂模式上的扩展和分支吧

 

posted @ 2014-03-20 17:36  jami918  阅读(247)  评论(0编辑  收藏  举报