1 <?php 2 class demo{ 3 //用于保存当前类的实例 4 private static $instance; 5 //构造函数私有化,防止直接new当前对象 6 private function __construct(){} 7 //析构函数私有化,防止从外部直接复制当前对象 8 private function __clone(){} 9 //getinstance公有函数用于获取当前类的实例10 public static function getinstance()11 {12 //判断当前类成员变量instance是否为空13 //如果不为空,则直接返回类的实例14 //如果为空,则new一个当前类的实例,并保存到类成员变量15 //instance中,然后直接返回成员变量16 if(empty(lf::$instance))17 {18 //将实例保存到instance成员变量中19 lf::$instance = new static();20 //直接返回成员变量21 return lf::$instance;22 }el{23 //直接返回类实例2好玩的地方4 return lf::$instance;25 }26 }27 }28 $demo1 = demo::getinstance();//获取到实例29 $demo2 = new demo();//报错
<?php//paymentfactory.phpinterface paymentfactory{ //请求收款码 public function qrcode(); //监听收款 public functi罗马公约on listen();}interface createpay { //将对象的创建抽象成一个接口 function createopen($class,$data);//内向创建 function createintro($class,$data);//外向创建}//微信支付类class wxpay implements paymentfactory{ public function qrcode() { //微信业务逻辑代码 //返回收款码以及订单相关参数 return "我是微信二维码"; } public function listen() { //微信业务逻辑代码 //返回订单结果 return "正在监听"; }}//阿里支付类class aliyun implements paymentfactory{ public function qrcode() { //业务逻辑代码 //返回收款码以及订单相关参数 return "我是支付宝二维码"; } public function listen() { //业务逻辑代码 //返回订单结果 return "正在监听"; }}//实现createpay接口class createp implements createpay{ public function createopen($class,$data =[]) { return new $class($data); } public function createintro($class,$data = []) { return new $class($data); }}//开发者类class client{ static function get($class,$data = []) { $fac = new createp();// var_dump($fac); return $fac->createopen($class,$data); }}$pay = client::get("wxpay");echo $pay->qrcode(); //输出,我是微信二维码
<?php//全局注册类class register{ //存储类的实例 public static $maps; //注册操作 public static function t($name,$cla) { //判断是否已经存储 if(array_key_exists($name,lf::$maps)) { //如果全局maps内已有则直接返回 return true; }el{ //如果没有name 则将实例和name按键值对存储到成员变量内 lf::$maps[$name] = $cla; return true; } } //获取类实例 public static function get($name) { //判断name值是否存在 if(array_key_exists($name,lf::$maps)) { 语文题目 //如果存在则直接返回对应的类的实例 return lf::$maps[$name]; }el{ //如果不存在,则返回fal或者其他 return fal; } }}
接口 idataba<?phpnamespace imooc;interface idataba{ function connect($host, $ur, $passwd, $dbname); function query($sql); function clo();}mysql<?phpnamespace imooc\databa;u imooc\idataba;class mysql implements idataba{ protected $conn; function connect($host, $ur, $passwd, $dbname) { $conn = mysql_connect($host, $ur, $passwd); mysql_lect_db($dbname, $conn); $this->conn = $conn; } function query($sql) { $res = mysql_query($sql, $this->conn); return $res; } function clo() { mysql_clo($this->conn); }}mysqli<?phpnamespace imooc\databa;u imooc\idataba;class mysqli implements idataba{ protected $conn; function connect($host, $ur, $passwd, $dbname) { $conn = mysqli_connect($host, $ur, $passwd, $dbname); $this->conn = $conn; } function query($sql) { return mysqli_query($this->conn, $sql); 阅兵式2019高清完整版中国70周年 } function clo() { mysqli_clo($this->conn); }}pdo<?phpnamespace imooc\databa;u imooc\idataba;class pdo implements idataba{ protected $conn; function connect($host, $ur, $passwd, $dbname) { $conn = new \pdo("mysql:host=$host;dbname=$dbname", $ur, $passwd); $this->conn = $conn; }function query($sql) { return $this->conn->query($sql); } function clo() { unt($this->conn); }}
<?php//eventgenerator//事件触发抽象类abstract class evemtgenerator{ //存储观察者类 private $obrver =[]; //添加观察者操作 public function addob(obrver $obrver) { $this->obrver[] = $obrver; } //观察者通知操作 public function notify() { //循环类成员变量,并执行对应的观察者更新方法 foreach ($this->obrver as $obrver) { //执行每个观察者类内的更新操作 $obrver->update(); } }}//定义观察者接口interface obrver{ public function update();}//实现一个被观察者类class test extends evemtgenerator{ //实现一个登陆方法 public function login() { return "登陆成功"; }}//实现一个观察者class obrver1 implements obrver{ //定义一个逻辑更新操作 例如:添加了csrf验证 public function update() { if($_post['csrf'] == getcsrf()) { return true; }el{ exit("csrf验证不正确"); } }}//实例化test类 被观察$event = new test();$event->addob(new obrver1());$event->login();//更新通知操作$event->notify();
//定义策略接口,规范策略行为interface urstrategy{ public function show(); public function message();}//定义一个喜欢买西装的用户类class suitur implements urstrategy{ public function show() { //为用户跳转到西装页面 return "跳转到西装页面"; } public function message() { //发送message echo "即将为您展示最新的西装某某某"; }}//定义一个喜欢买裙子的用户类class skirtur implements urstrategy{ public function show() { //为用户跳转到西装页面 return "跳转到裙子推荐页面"; } public function message() { //发送message echo "即将为您展示最新的裙子某某某"; }}//定义一个业务类class urs{ //存储对应的用户类 private $urcla; //执行策略接口 public function start() { echo "跳转页面是:".$this->strategy->show(); echo "消息是:".$this->strategy->message(); } //注册对应的用户类 public function tstrategy(urstrategy $strategy) { $this->$urcla = $strategy; }}//业务逻辑代码 判断用户习性$ur1 = "西装";$ur2 = "裙子";$url = new urs();//如果用户习性为喜欢看西装或者买西装则if ($ur1 == "西装"){$url->tstrategy(new suitur());$url->start();}
本文发布于:2023-04-08 11:39:53,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/f405ec874281fa8754305e14bfc7d30a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP常用设计模式,PHP常用设计模式详解,PHP详解设计模式,PHP设计模式.doc
本文 PDF 下载地址:PHP常用设计模式,PHP常用设计模式详解,PHP详解设计模式,PHP设计模式.pdf
留言与评论(共有 0 条评论) |