网站开发验收申请报告,温州阿里巴巴网站建设,网络工程技术适合女生吗,凯里网站建设gzklyy幻灯片 1:
初探PHP设计模式
copyright CSDN 白毛大侠
幻灯片 2:
我们说别人代码写的烂#xff0c;烂在哪#xff1f;
反思我们平时是怎么写代码的#xff1f;
非开发者如何转开发#xff08;业务#xff09; #xff1f; 一.过程与对象
幻灯片 3: ?… 幻灯片 1:
初探PHP设计模式
copyright CSDN 白毛大侠
幻灯片 2:
我们说别人代码写的烂烂在哪
反思我们平时是怎么写代码的
非开发者如何转开发业务 一.过程与对象
幻灯片 3: ?php echo “开火”; echo “煎鱼”; echo “烧水” echo “水滚放鱼” echo “起锅”
echo “开火”; echo “煎鱼”; echo “放调料” echo “再煎” echo “起锅” 内容1 面向过程的代码
幻灯片 4:
1
3
2 代码无法重用 代码属于堆砌状态 会被接手的人诅咒 问题
幻灯片 5:
?php function zhuyu(){ echo “开火”; echo “煎鱼”; echo “烧水” echo “水滚放鱼” echo “起锅”} function jianyu(){ echo “开火”; echo “煎鱼”; echo “放调料” echo “再煎” echo “起锅”} zhuyu(); jianyu(); 内容1 面向结构化的代码
幻灯片 6: 1
3
2 代码可重用 方便调用 结构清晰 优点
1
3
2 文件做为结构化编程的一个集合单元那么文件的数量会越来越多 勉强的解决方案 目录做为更大的集合 问题 自己都不记得哪里被调用过 Function不易找到 不知是否声明过、写过类似功能的function function命名易重名, 新代码的修改会破坏原有代码存在新的bug隐患。 幻灯片 7:
面向对象考虑维护期的设计方式
我才是主角 觉悟吧
幻灯片 8: ?php Class Student { public $name; public $age; protected $grade; //constract public function showInfo() { echo $this - name.:.$this - age; } public function xuehao() { echo br/学号:.($this-age 10); } } $stu1 new Student(); $stu1 - name zhangsan; $stu1 - age 24; $stu1 - showInfo(); $stu1 - xuehao(); ?
幻灯片 9:
PHP面向对象三大特征封装、多态、继承
幻灯片 10: 封装 封装就是把抽象出的数据和对数据的操作封装在一起数据被保护在内部程序的其他部分只有通过被授权的操作成员方法才能对数据进行操作。
通俗来说 封装是php面向对象的其中一个特性将多个可重复使用的函数封装到一个类里面。在使用时直接实例化该类的某一个方法获得需要的数据
如果是私有的方法和属性值外部无法访问具有一定的保护作用。
幻灯片 11: 继承 所谓继承就是一个子类通过extends 父类 把父类的一些public / protected属性和public / protected方法继承下来。不能继承私有的
幻灯片 12: ?php //简单的继承例子 //父类 Class Student { public $name; protected $age; protected $grade; /*function __construct() { echo 1234; $this-name 5555; }*/ public function showInfo() { echo $this - name.br/.$this - age; } } /** * 小学生 */ class Pupil extends Student { /*function __construct() { parent::__construct(); var_dump($this-name); echo xiaoxuesheng; $this-name xiaoxuesheng; }*/ public function test() { echo br/小学生在考试。。。; } } /** * 大学生 */ class Graduate extends Student { public function test() { echo br/大学生在考试。。。; } } $stu1 new Pupil(); $stu1 - name lizzy; $stu1 - test(); $stu1 - showInfo(); $stu2 new Graduate(); $stu2 - name zxm; $stu2 - test(); $stu2 - showInfo(); ?
幻灯片 13: ?php //1protected属性和方法受保护在子类不能直接调用要在子类中定义方法访问。 Class ParentClass { public $name lizzy; protected $age 24; private $sex 女; public function test1() { echo br/展示public方法; } protected function test2() { echo br/展示protected方法; } private function test3() { echo br/展示private方法; } }
Class SubClass extends ParentClass { function show() { echo age.$this-age; // echo sex.$this-sex;//是不能继承下来的 $this - test2(); // $this - test3(); //间接访问都不行 } }
$sub1 new SubClass(); $name$sub1 - name; var_dump($name); $sub1 - show(); //show直接访问test2可以间接访问
$sub1 - test1();//可以直接访问 $name$sub1 - test2;//不能直接访问 $name$sub1 - test3;//不能直接访问 幻灯片 14: 1protected属性和方法受保护在子类不能直接调用要在子类中定义方法访问。
2如果希望子类调用父类的构造方法或者其他方法public / protected可以使用类名::方法名; 或者parent::方法名;
3当一个子类的方法和父类方法protected/public完全一致时我们称之为方法的覆盖重写。 幻灯片 15: 多态
一个类被多个子类继承如果这个类的某个方法在多个子类中表现出不同的功能我们称这种行为为多态。 同一个类的不同子类表现出的不同行态
多态的实现必须要满足三个条件一是子类继承父类二是子类重写父类的方法三是父类引用指向子类对象
幻灯片 16: ?php //当一个父类知道所有的子类都有一个方法 //但是父类不能确定该方法究竟如何写可以让子类去覆盖这个方法。 Class Animal { function cry() { echo “发声叫; } } //重写 Class Dog extends Animal { function cry() { echo 小狗汪汪叫; } } //重写 Class Pig extends Animal { function cry() { echo 小猪哼哼叫; } }
$dog new Dog(); $dog - cry(); echo br; $pig new Pig(); $pig - cry(); ?
幻灯片 17:
设计模式不是拳打脚踢 它是一套降龙十八掌
幻灯片 18:
幻灯片 19:
幻灯片 20:
Singleton(单例模式):单例模式是最常见的模式之一在Web应用的开发中常常用于允许在运行时为某个特定的类创建仅有一个可访问的实例。 Factory(工厂模式):工厂模式是另一种非常常用的模式正如其名字所示确实是对象实例的生产工厂。某些意义上工厂模式提供了通用的方法有助于我们去获取对象而不需要关心其具体的内在的实现。 单例模式
工厂模式
幻灯片 21: ?php class Single { private $name;//声明一个私有的实例变量 private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。 } static public $instance;//声明一个静态变量保存在类中唯一的一个实例 static public function getinstance(){//声明一个getinstance()静态方法用于检测是否有实例对象 if(!self::$instance) self::$instance new self(); return self::$instance; } public function setname($n){ $this-name $n; } public function getname(){ return $this-name; } } $oa Single::getinstance(); var_dump($oa); $oa-setname(hellow); $ob Single::getinstance();
echo $oa-getname();//hellow echo $ob-getname();//hellow
单例模式
幻灯片 22: 工厂模式
幻灯片 23: 工厂模式
幻灯片 24: ?php
class CommsManager { const BLOGGS 1; const MEGA 2; private $mode 1; public function __construct( $mode ) { $this-mode $mode; } function getApptEncoder() { switch($this-mode) { case (self::MEGA): return new MegaApptEncoder(); default: return new BloggsApptEncoder(); } } } $comms new CommsManager(CommsManager::MEGA); $appEncoder $comms-getApptEncoder(); Print $apptEncoder-encode(); 工厂模式
幻灯片 25:
框架是有灵魂的看你是否能心意相通
幻灯片 26: 工厂模式
幻灯片 27: 谢谢 观看