zoukankan      html  css  js  c++  java
  • 抽象工厂模式

    多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
    一个抽象工厂类,可以派生出多个具体工厂类。
    每个具体工厂类可以创建多个具体产品类的实例。

    <?php
    //面向接口编程,这是一个接口,抽象类,用于规范业务层子类实现
    abstract class AUser {
    abstract public function selectUser(); //查找
    abstract public function updateUser(); //修改
    abstract public function deleteUser(); //删除
    abstract public function addUser(); //新增
    }
    ?>

    <?php
    //这是一个业务层,实现接口即可
    class UserAction extends AUser {
    public function selectUser() {
    return '查找用户';
    }
    public function updateUser() {
    return '修改用户';
    }
    public function deleteUser() {
    return '删除用户';
    }
    public function addUser() {
    return '新增用户';
    }
    }
    ?>

    <?php
    //工厂,用来生产各个产品的业务层对象
    //每个对象,可以使用之前学过的单例模式,让他在整个流程中只保持一个实例
    class Factory {
    static public function getUser() {
    return new UserAction();
    }
    static public function getArticle() {
    //return new ArticleAction();
    }
    }
    ?>

    <?php
    //用于客户端直接调用的类
    class User {
    private $_obj;
    public function __construct() {
    $this->_obj = Factory::getUser();
    }
    public function selectUser() {
    return $this->_obj->selectUser();
    }
    public function updateUser() {
    return $this->_obj->updateUser();
    }
    public function deleteUser() {
    return $this->_obj->deleteUser();
    }
    public function addUser() {
    return $this->_obj->addUser();
    }
    }
    ?>

    $_user = new User();
    echo $_user->selectUser();
    echo $_user->addUser();

  • 相关阅读:
    spring ref &history&design philosophy
    LDAP & Implementation
    REST
    隔离级别
    Servlet Analysis
    Session&Cookie
    Dvelopment descriptor
    write RE validation
    hello2 source anaylis
    Filter
  • 原文地址:https://www.cnblogs.com/jsmiao/p/4567374.html
Copyright © 2011-2022 走看看