php门面模式(facade pattern)

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

<?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();
?>

原文地址:https://www.cnblogs.com/aguncn/p/11182635.html

时间: 2024-08-25 09:16:25

php门面模式(facade pattern)的相关文章

设计模式之门面模式---Facade Pattern

模式的定义 门面模式(Facade Pattern)也叫做外观模式,定义如下: Provide a unified interface to a set of interfaces in a subsystem. Facade defines a highet-level interface that makes the subsystem easier to use. 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用. 类型 结构

门面模式-Facade Pattern(Java实现)

门面模式-Facade Pattern 为一个复杂的模块或子系统提供一个简单的供外界访问的接口 本文中代码的例子如下: 一个矿场有很多矿工, 矿工的职责也都不一样. 但一样的是什么呢? 一样的就是每个矿工每天都在重复一样的事情....起床, 上班, 工作, 下班, 睡觉...... 要想管理这么多矿工的这么多事情可不简单(好麻烦啊...挨个调用的时候开发者也有可能会忘掉某个人, 或者忘掉某一个方法)., 再举个栗子, 比如操作数据库也一样, 要加载驱动, 建立连接, 操作数据库, 关闭连接. 这

设计模式-10外观模式(Facade Pattern)

1.模式动机 在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了. 软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂.这时如果系统内部发生改变,客户端也要跟着改变,这违背了"开闭原则",也违背了"迪米特法则(最少知道原则)",所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标. 2.模式定义 外观模式(F

设计模式 - 外观模式(facade pattern) 详解

外观模式(facade pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy 外观模式(facade pattern): 提供了一个统一的接口, 用来访问子系统中的一群接口. 外观定义了一个高层接口, 让子系统更容易使用. 外观模式包含三个部分: 1. 子系统: 子类, 单个复杂子类 或 多个子类; 2. 外观(facade)类: 把子系统设计的更加容易使用; 3. 客户: 只需要调用外观类. 与适配器模式(adapter pattern)的

二十四种设计模式:外观模式(Facade Pattern)

外观模式(Facade Pattern) 介绍为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 示例有一个Message实体类,某对象对它的操作有Get()方法,另外还有一个对象有一个Validate()方法来判断用户是否有权限.现在提供一个高层接口来封装这两个方法. MessageModel using System; using System.Collections.Generic; using System.Text; nam

说说设计模式~门面模式(Facade)

返回目录 门面模式(Facade)属于结构型模式的一种,它符合面向对象的封装原则,但又不符合开闭原则,呵呵,今天我们主要说它的优点,不谈缺点. 定义 门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口.使用子系统更容易使用. 技巧 我们在设计子类时,由于外部通过门面去访问它的功能,所以一般子类都会被声明为internal. 何时能用到它? 1.客户只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式. 2.当

外观模式 门面模式 Facade 创建型 设计模式(十三)

外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本上都是会往功能更全面的方向发展,那么也就意味着我们的系统将会变得更加复杂. 系统会被划分为多个单独的子系统,每个子系统完成一部分功能,通过分工协作完成全部功能. 一个子系统也可能进一步拆分为更小的几个子系统. 程序中的文件将会越来越多,相互关联也会变得更加复杂 当使用一个功能的时候,作为客户端 你需

设计模式(结构型)之外观模式(Facade Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<设计模式(结构型)之装饰者模式(Decorator Pattern)>http://blog.csdn.net/yanbober/article/details/45395747 概述 一个客户类需要和多个业务类交互,而这些业务类经常会作为整体出现,由于涉及到的类比较多,导致使

Tomcat源代码-门面模式(Facade)

从Tomcat源码提炼出设计模式-门面设计模式: 概念 外部访问内部,耦合度增加,不利于扩展.而门面模式在内部基础上进行再度封装,只提供外部想要的方法.这时访问方式由“外部---内部”变为了“外部---门面对象---内部”. 目的 1 有些内部对象的方法,不想对外部得知使用,使用内部对象Facade模式,只提供给外部需要的方法,其它方法不进行显示. 2 为了降低外部与内部的耦合度,增加扩展性,内部对象可以随意改变,当然改变也是有限度的,而不会影响外部访问方式. Tomcat服务器底层处理serv