想讲的老师讲不明白,能讲明白的老师不想来讲。网上讲设计模式课的很少。有的只是边学边录的视频,灵活运用的少。这东西了解思想后必须多练才行,这玩意儿没得几年的功夫搞不明白,对于我来说是这样。
命名空间有问题吧,贴全代码
这个要配合路由才能实现
原型是克隆,单例是静态。。。克隆相当于双胞胎两个可以同时做不同的事。静态其实是一个人不能同时做两件事
不是抽象类,你怎么实现多态呢,你想想~
表字段的话,直接是面向对象编程了,对象是一个类,所有字段都是属性,直接改属性就好。
这个装饰器实际上是功能性逻辑性的装饰,
说明你不懂面向对象的思想。可以多看看这方面的课程哦。面向对象的核心思想到底是什么?其实用大白话说就是【代码复用】以及【行为约定】,少些代码。举个最简单的例子,数据库的3种操作,mysql,mysqli以及pdo,它们都可以操作数据库,但是它们的操作方法又不一样,这时候如果我想在我的网站系统里同时加入这3种数据库操作并可以随意选择,而且使用它的人只需要知道一种统一的操作方法怎么办?没错,这时候你就要用接口来开发了。首先你定义一个接口比如叫Db,Db里有3个方法connect,query,close,然后你写3个类mysql,mysqli,pdo都实现这个接口的3个方法(可能数据库的连接不叫connect方法,但是你实现连接的方法已经封装在connect里了)。这时候外面只需要用Db这个接口,他都只需要调用connect,query,close这三个方法就行,而不用管你mysql,mysqli,pdo里都有什么方法,这也就实现了3种数据库随意切换,但是你代码不用改,因为你调用的只有connect,query,close这三个方法
解决了么?我的也是这样
index.php:
Object文件:
运行结果:不报错,也不会输出
把代码贴出来看一下 是不是你Loader类的命名空间不对
保存从数据库取得的对象
只是写了思路并没有去完善代码报错也正常
这种案例在框架中用的比较多,你可以看下Thinkphp 6 和 Laravel这两种框架,尤其是Laravel把设计模式用到了极致
注册树模式等同于单例模式+工厂模式吧
redis nosql 都是存在数据库的,虽然是缓存,但是可以保留。 但是这个代码的注册器,程序完全运行结束后,就全部销毁了
报错信息上写的很清楚哪里错了啊
标签<div1><div2></div2></div1> after 反转
我觉得可以理解成正好相反的模式,适配器模式是把多种统一成一种,而策略模式是把一种分解为多种
感觉没有多态喃?
就是用了interface,然后都去implements这个接口
users
使用枚举,表格驱动的方法优化if...else...代码 粗糙写法如下,代码其实还可以优化 class AdvertisingRoleEnum{ const MALE = 1; const FEMALE = 0; public static function getStrategy($gender){ $listExplain[self::MALE] = new \IMooc\MaleUserStrategy(); $listExplain[self::FEMALE] = new \IMooc\FemaleUserStrategy(); return $listExplain[$gender]; } } class Page { protected $strategy; function index() { echo "AD:"; $this->strategy->showAd(); echo "<br/>"; echo "Category:"; $this->strategy->showCategory(); echo "<br/>"; } function setStrategy(\IMooc\UserStrategy $strategy){ $this->strategy = $strategy; } } $page = new Page(); $gender = isset($_GET['female'])??0; $strategy = AdvertisingRoleEnum::getStrategy($gender); //if (isset($_GET['female'])){ // $strategy = new \IMooc\FemaleUserStrategy(); //}else{ // $strategy = new MaleUserStrategy(); //} $page->setStrategy($strategy); $page->index();
你这儿访问这个类了。
我想到的是专用于数据库的连接类。
因为数据库是一种资源,如果不用单例模式做数据库连接的类的话,在脚本中任由多次连接这个数据库的话,会造成服务器的压力,因为数据库有最大连接数的概念。单例模式说白了,意思就是保证只能实例化一次数据库连接。无论你在代码中有多少个new 操作。
我的理解:1.适配器模式:主要是几种不同的类做一个统一的类去调用。修改主体后面方法直接通用。
2.策略模式:一组特定的行为或者算法封装成类 以适用某中特需的上下文。
适配器是现有不同的类我们去写一个方法统一调用(现有不同的类或者接口等)。策略是我们实现特需的场景来统一调用(是场景触发了布局)。
这个要自己配置web服务器和实现路由解析了
个人理解,视频里的例子使用工厂模式+注册树模式 等同于 单例模式 的便捷实现;可以使用单例模式,只不过如果有多个数据表的话,需要去为每个数据表写一个'单例',代码比较冗余而且比较麻烦