• 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
    */
    

      

  • 相关阅读:
    oracle数据库常用指令
    MySql常用命令
    js动态添加和删除行
    Mybatis模糊查询
    laravel 成功跳转页面
    laravel 验证码
    git获取公钥和私钥以及常用的命令
    laravel css和js的引入
    git add -A 、git add -u 、 git add . 三种区别
    windows下github 出现Permission denied (publickey).解决方法
  • 原文地址:https://www.cnblogs.com/intval/p/3560094.html
Copyright © 2020-2023  润新知