zoukankan      html  css  js  c++  java
  • PHP设计模式之工厂模式(权限分配)

    // 抽象基类 User
    abstract class User{
    
    	protected $name = NULL;
    
    	// 构造函数
    	function User($name){
    		$this->name = $name;
    	}
    
    	// 获取属性$name
    	function getName(){
    		return $this->name;
    	}
    
    	// 浏览权限
    	function ViewAccess(){
    		return "No";
    	}
    
    	// 编辑权限
    	function EditAccess(){
    		return "No";
    	}
    
    	// 删除权限
    	function DeleteAccess(){
    		return "No";
    	}
    	
    	// 管理权限
    	function ManageAccess(){
    		return "No";
    	}
    }
    
    // 普通用户
    class Client extends User{
    
    	function ViewAccess(){
    		return "Yes";
    	}
    }
    
    // 编辑
    class Manager extends User{
    
        function ViewAccess(){
            return "Yes";
        }
    
        function EditAccess(){
            return "Yes";
        }
    }
    
    // 管理员
    class Administrator extends User{
    
    	function ViewAccess(){
    		return "Yes";
    	}
    
    	function EditAccess(){
    		return "Yes";
    	}
    
    	function DeleteAccess(){
    		return "Yes";
    	}
    }
    
    // 技术人员
    class Supporter extends User{
    
    	function ViewAccess(){
    		return "Yes";
    	}
    
    	function EditAccess(){
    		return "Yes";
    	}
    
        function DeleteAccess(){
    		return "Yes";
    	}
    
    	function ManageAccess(){
    		return "Yes";
    	}
    }
    
    // 工厂类
    class Factory{
    
    	// 静态成员属性
    	private static $users = array("Simon"=>"Client", "Elaine"=>"Administrator", "Bob"=>"Supporter", "Tom"=>"Manager");
    
    	// 创建对象的成员方法
    	static function Create($name){
    
    		//根据成员属性的不同创建不同的对象
    		switch (self::$users[$name]){
    
    			case "Client": 
    				  return new Client($name);
                case "Manager":
                    return new Manager($name);
    			case "Administrator": 
    				  return new Administrator($name);
    			case "Supporter": 
    				  return new Supporter($name);
    		}
    	}
    }
    
    // 一个存放用户名的数组
    $users = array("Elaine", "Simon", "Bob", "Tom");
    
    // 对于每个用户分析其权限
    foreach($users as $user){
    
    	$obj = Factory::Create($user);
    
    	echo PHP_EOL.$obj->getName(),'的权限',PHP_EOL;
    	echo '浏览:',$obj->ViewAccess(),PHP_EOL;
    	echo '修改:',$obj->EditAccess(),PHP_EOL;
    	echo '删除:',$obj->DeleteAccess(),PHP_EOL;
    	echo '管理:',$obj->ManageAccess(),PHP_EOL;
    }
    
    /*
    结果:
    Elaine的权限
    浏览:Yes
    修改:Yes
    删除:Yes
    管理:No
    
    Simon的权限
    浏览:Yes
    修改:No
    删除:No
    管理:No
    
    Bob的权限
    浏览:Yes
    修改:Yes
    删除:Yes
    管理:Yes
    
    Tom的权限
    浏览:Yes
    修改:Yes
    删除:No
    管理:No
    */
    

      

  • 相关阅读:
    phpMyAdmin <= 4.0.4.1 import.php GLOBALS变量注入漏洞
    第一个VC++ win32程序 绘制简单图形
    QTP 9.2 下载&破解
    MacOS下使用VMware5 破解 安装win7 ISO 激活
    win7 原版下载&激活
    jQuery.ui autoComplete使用
    SubLime2 win + mac keygen
    为Chrome添加https搜索 自定义地址栏搜索引擎
    jQuery validate入门
    Bootstrap dropdown 使用
  • 原文地址:https://www.cnblogs.com/intval/p/3560094.html
Copyright © 2011-2022 走看看