书上不全的代码,我自己补全的。

<?php
/*
The facade pattern is used when we want to simplify the complexities of large
systems through a simpler interface. It does so by providing convenient methods
for most common tasks, through a single wrapper class used by a client.
*/

class Product {
    private $qty = null;

    public function __construct($qty) {
        $this->qty = $qty;
    }

    public function getQty() {
        echo 'Product_getQty<br/>';
        return $this->qty;
    }
}

class QuickOrderFacade {
    private $product = null;
    private $orderQty = null;

    public function __construct($product, $orderQty) {
        $this->product = $product;
        $this->orderQty = $orderQty;
    }

    public function generateOrder() {
        if ($this->qtyCheck()) {
            $this->addToCart();
            $this->calculateShipping();
            $this->applyDiscount();
            $this->placeOrder();
        }
    }

    private function addToCart() {
        echo 'QuickOrderFacade_addToCart<br/>';
    }

    private function qtyCheck() {
        if ($this->product->getQty() > $this->orderQty) {
            return true;
        } else {
            return false;
        }
    }

    private function calculateShipping() {
        echo 'QuickOrderFacade_calculateShipping<br/>';
    }

    private function applyDiscount() {
        echo 'QuickOrderFacade_applyDiscount<br/>';
    }

    private function placeOrder() {
        echo 'QuickOrderFacade_placeOrder<br/>';
    }
}

$order = new QuickOrderFacade(new Product(8), 6);
$order->generateOrder();
?>

最新文章

  1. Perforce: 常用功能。
  2. JavaScript -- 小试牛刀
  3. php生成随机密码的几种方法
  4. 如何用css3实现一个图片的抖动或者弹跳
  5. PHP调试总结
  6. linux下如何开启oracle服务和开启监听
  7. Python面向对象入门
  8. Button的图像位置设置
  9. httpclient 人人网
  10. 关于DatePicker控件在IsEnabled为False视觉效果没有明显辨识度的处理方法
  11. Java反转单链表(code)
  12. windows server 2008 R2 忘记administrator密码
  13. C++语言体系设计哲学的一些随想(未完待续)
  14. js 模板引擎 jade使用语法
  15. 移动端iOS阻止橡皮筋效果
  16. C# 使用HtmlAgilityPack抓取网页信息
  17. H5开发中的故障
  18. springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)
  19. [angularjs] angularjs系列笔记(一)简介
  20. mpvue——引入antv-F2图表

热门文章

  1. 应用JWT进行用户认证及Token的刷新
  2. 2018-2019-2 20165313 《网络对抗技术》 Exp 8 Web基础
  3. 不让应用的日志输出到message文件中
  4. [解决方案]IIS常见问题集锦
  5. PatchMatch笔记
  6. Linux之三剑客
  7. 了解编程语言 ----- c# 简介
  8. jmeter通过BeanShell,实现对接口参数HmacSHA256加密(转)
  9. tornado利用装饰器记录每个http请求
  10. 尝试 WebAssembly