首页 > 语言 > PHP > 正文

php设计模式 建造者模式 与Adapter(适配器模式)

2024-09-04 11:43:43
字体:
来源:转载
供稿:网友

适配器模式:将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作.

建造者模式:将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示.

  1. /**  
  2. * 适配器模式  
  3.  
  4. * 将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作  
  5. */ 
  6.  
  7. // 这个是原有的类型  
  8. class OldCache  
  9. {  
  10. public function __construct()  
  11. {  
  12. echo "OldCache construct<br/>";  
  13.  
  14. public function store($key,$value)  
  15. {  
  16. echo "OldCache store<br/>";  
  17.  
  18. public function remove($key)  
  19. {  
  20. echo "OldCache remove<br/>";  
  21.  
  22. public function fetch($key)  
  23. {  
  24. echo "OldCache fetch<br/>";  
  25. }  
  26.  
  27. interface Cacheable  
  28. {  
  29. public function set($key,$value);  
  30. public function get($key);  
  31. public function del($key);  
  32.  
  33. class OldCacheAdapter implements Cacheable  
  34. {  
  35. private $_cache = null;  
  36. public function __construct()  
  37. {  
  38. $this->_cache = new OldCache();  
  39.  
  40. public function set($key,$value)  
  41. {  
  42. return $this->_cache->store($key,$value);  
  43.  
  44. public function get($key)  
  45. {  
  46. return $this->_cache->fetch($key);  
  47.  
  48. public function del($key)  
  49. {  
  50. return $this->_cache->remove($key);  
  51. }  
  52.  
  53. $objCache = new OldCacheAdapter();  
  54. $objCache->set("test",1);  
  55. $objCache->get("test");  
  56. $objCache->del("test",1); 

php设计模式 Builder(建造者模式).

  1. /**  
  2. * 建造者模式  
  3.  
  4. * 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示  
  5. */  
  6. class Product  
  7. {  
  8. public $_type = null;  
  9. public $_size = null;  
  10. public $_color = null; 
  11.  
  12. public function setType($type)  
  13. {  
  14. echo "set product type<br/>";  
  15. $this->_type = $type;  
  16.  
  17. public function setSize($size)  
  18. {  
  19. echo "set product size<br/>";  
  20. $this->_size = $size;  
  21.  
  22. public function setColor($color)  
  23. {  
  24. echo "set product color<br/>";  
  25. $this->_color = $color;  
  26. }  
  27.  
  28. $config = array(  
  29. "type"=>"shirt",  
  30. "size"=>"xl",  
  31. "color"=>"red",  
  32. ); 
  33.  
  34. // 没有使用bulider以前的处理  
  35. $oProduct = new Product();  
  36. $oProduct->setType($config['type']);  
  37. $oProduct->setSize($config['size']);  
  38. $oProduct->setColor($config['color']); 
  39.  
  40.  
  41. // 创建一个builder类  
  42. class ProductBuilder  
  43. {  
  44. var $_config = null;  
  45. var $_object = null; 
  46.  
  47. public function ProductBuilder($config)  
  48. {  
  49. $this->_object = new Product();  
  50. $this->_config = $config;  
  51.  
  52. public function build()  
  53. {  
  54. echo "--- in builder---<br/>";  
  55. $this->_object->setType($this->_config['type']);  
  56. $this->_object->setSize($this->_config['size']);  
  57. $this->_object->setColor($this->_config['color']);  
  58.  
  59. public function getProduct()  
  60. {  
  61. return $this->_object;  
  62. }  
  63. $objBuilder = new ProductBuilder($config);  
  64. $objBuilder->build();  
  65. $objProduct = $objBuilder->getProduct(); 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表