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

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

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

  1. /**
  2. * 适配器模式
  3. *
  4. * 将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作
  5. */
  6. // 这个是原有的类型
  7. class OldCache
  8. {
  9. public function __construct()
  10. {
  11. echo "OldCache construct<br/>";
  12. }
  13. public function store($key,$value)
  14. {
  15. echo "OldCache store<br/>";
  16. }
  17. public function remove($key)
  18. {
  19. echo "OldCache remove<br/>";
  20. }
  21. public function fetch($key)
  22. {
  23. echo "OldCache fetch<br/>";
  24. }
  25. }
  26. interface Cacheable
  27. {
  28. public function set($key,$value);
  29. public function get($key);
  30. public function del($key);
  31. }
  32. class OldCacheAdapter implements Cacheable
  33. {
  34. private $_cache = null;
  35. public function __construct()
  36. {
  37. $this->_cache = new OldCache();
  38. }
  39. public function set($key,$value)
  40. {
  41. return $this->_cache->store($key,$value);
  42. }
  43. public function get($key)
  44. {
  45. return $this->_cache->fetch($key);
  46. }
  47. public function del($key)
  48. {
  49. return $this->_cache->remove($key);
  50. }
  51. }
  52. $objCache = new OldCacheAdapter();
  53. $objCache->set("test",1);
  54. $objCache->get("test");
  55. $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. public function setType($type)
  12. {
  13. echo "set product type<br/>";
  14. $this->_type = $type;
  15. }
  16. public function setSize($size)
  17. {
  18. echo "set product size<br/>";
  19. $this->_size = $size;
  20. }
  21. public function setColor($color)
  22. {
  23. echo "set product color<br/>";
  24. $this->_color = $color;
  25. }
  26. }
  27. $config = array(
  28. "type"=>"shirt",
  29. "size"=>"xl",
  30. "color"=>"red",
  31. );
  32. // 没有使用bulider以前的处理
  33. $oProduct = new Product();
  34. $oProduct->setType($config['type']);
  35. $oProduct->setSize($config['size']);
  36. $oProduct->setColor($config['color']);
  37. // 创建一个builder类
  38. class ProductBuilder
  39. {
  40. var $_config = null;
  41. var $_object = null;
  42. public function ProductBuilder($config)
  43. {
  44. $this->_object = new Product();
  45. $this->_config = $config;
  46. }
  47. public function build()
  48. {
  49. echo "--- in builder---<br/>";
  50. $this->_object->setType($this->_config['type']);
  51. $this->_object->setSize($this->_config['size']);
  52. $this->_object->setColor($this->_config['color']);
  53. }
  54. public function getProduct()
  55. {
  56. return $this->_object;
  57. }
  58. }
  59. $objBuilder = new ProductBuilder($config);
  60. $objBuilder->build();
  61. $objProduct = $objBuilder->getProduct();