php 设计模式 例子
加载类:
include("./Ren.class.php");
include "./Ren.class.php";
require("./Ren.class.php");
require "./Ren.class.php";
require_once("./Ren.class.php");
require_once "./Ren.class.php";
自动加载类的方法
所有的类文件要放在同一个目录下
所有类文件的命名规则一致
/*
function __autoload($classname)
{
require $classname.".class.php";
}
设计模式
//1.单例模式
//类的计划生育
//1.让该类在外界无法造对象
//2.让外界可以造一个对象,做一个静态方法返回对象
//3.在类里面通过静态变量控制返回对象只能是一个
/*class Dog
{
static $dx;
public $test;
private function __construct()
{
}
static function DuiXiang() //返回的永远是同一个对象
{
if(empty(self::$dx))
{
self::$dx = new Dog();
}
return self::$dx;
}
}
$a = Dog::DuiXiang();
$b = Dog::DuiXiang();
$b->test="hello"; //a和b指向的是同一个对象
var_dump($a);*/ //所以a的public属性text的值也是hello
工厂模式
/*class YunSuan
{
public $a;
public $b;
function Jia()
{
return $a+$b;
}
function Jian()
{
return $a-$b;
}
}*/
abstract class YuanSuan //定义抽象类 运算
{
public $a;
public $b;
function Suan()
{
}
}
class Jia extends YuanSuan //jia jian cheng 皆为运算的具体实现
{
function Suan()
{
return $this->a+$this->b;
}
}
class Jian extends YuanSuan
{
function Suan()
{
return $this->a-$this->b;
}
}
class Cheng extends YuanSuan
{
function Suan()
{
return $this->a*$this->b;
}
}
class GongChang //工厂类
{
static function ShengChan($f)
{
switch($f)
{
case "+":
return new Jia();
break;
case "-":
return new Jian();
break;
case "*":
return new Cheng();
break;
}
}
}
$r = GongChang::ShengChan("*");
$r->a=10;
$r->b=5;
echo $r->Suan();
php 设计模式 例子的更多相关文章
- c#设计模式介绍
序号 模式名称 模式描述 应用场景 例子 1 单例模式 (SigletonPattern) 保证一个类仅有一个实例,并提供一个访问它的全局访问点. • 单例类只能有一个实例. • 单例类必须自己创建自 ...
- 写给Python初学者的设计模式入门
有没有想过设计模式到底是什么?通过本文可以看到设计模式为什么这么重要,通过几个Python的示例展示为什么需要设计模式,以及如何使用. 设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的 ...
- 设计模式之visitor模式,人人能懂的有趣实例
设计模式,现在在网上随便搜都一大堆,为什么我还要写"设计模式"的章节呢? 两个原因: 1.本人觉得这是一个有趣的设计模式使用实例,所以记下来: 2.看着设计模式很牛逼,却不知道怎么 ...
- 装饰者模式——(head first 设计模式3)
装饰者模式定义 装饰者模式动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 从定义来看,除了提到比继承更有弹性,其他的还是非常模糊,下面就先给出其UML类图. 从UML类 ...
- Head First设计模式——模板方法模式
前言:本篇我们讲解模板方法模式,我们以咖啡和茶的冲泡来学习模板方法.关于咖啡另一个设计模式例子也以咖啡来讲解,可以看下:Head First设计模式——装饰者模式 废话不多说,开始进入模板方法模式. ...
- Java 文件IO
文件IO Java IO IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 按操作数据分为 字节流和字符流 字符流的 ...
- Java:IO流之字符流缓冲区详解
字符流缓冲区: 1.缓冲区的出现提高了对数据的读写效率: 2.对应类:BufferedWriter.BufferedReader: 3.缓冲区要结合流才可以使用: 4.在流的基础上对流的功能进行了增强 ...
- 抽象工厂(Abstract Factory),工厂方法(Factory Method),单例模式(Singleton Pattern)
在谈工厂之前,先阐述一个观点:那就是在实际程序设计中,为了设计灵活的多态代码,代码中尽量不使用new去实例化一个对象,那么不使用new去实例化对象,剩下可用的方法就可以选择使用工厂方法,原型复制等去实 ...
- 面试(Java之IO与NIO)
一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...
随机推荐
- WinForm 问题集锦
[1]重用项目窗体解决方案: 1. 把FmMain.cs 和 FmMain.Designer.cs 和 FmMain .resx 三个文件复制到程序目录下: 2. 在vs里面添加现有项, 选择FmMa ...
- BroadcastReceiver之有序广播
有序广播可以按一定的优先级进行传播 首先进行发送广播 public void click(View v){ Intent intent = new Intent(); intent.setAction ...
- spring MVC学习笔记
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...
- 如何解决xml在eclipse下的拼写报错
进入preferences——键入“spelling”——看到勾选框:Enable spelling check,去掉勾选框,可消除eclipse下的拼写错误
- 天朝git的使用
开源中国社区 官方网站 https://git.oschina.net/ 开源中国社区成立于2008年8月,其目的是为中国的IT技术人员提供一个全面的.快捷更新的用来检索开源软件以及交流使用开源经验的 ...
- iOS开发-- 利用AVPlayer播放远程音乐和视频
一.简单的播放音乐和视频,播放视频的工具栏需要自己写 二.利用老师封装的框架实现视频播放 链接:http://pan.baidu.com/s/1hrEKlus 密码:8e7g
- Linux查找最近修改的文件
查找当前目录下.phtml文件中,最近30分钟内修改过的文件. find . -name 查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况. find . -name -ls ...
- 提示reg不是批处理命令怎么办
'regsvr32' 不是内部或外部命令,也不是可运行的程序或批处理文件.请按任意键继续. . . 系统环境变量被改了进入控制面板>高级>环境变量>系统变量,Path双击一下,填入C ...
- 用git管理源代码
自从做iOS开发的一年多以来,之前一直都是用svn进行代码管理.因为工作需要,我也开始用git管理源代码.关于git的基本使用,在此做一个详细的介绍,希望能对初次接触git的人有所帮助! 本篇博客针对 ...
- 【caffe】train_lenet.sh在windows下的解决方案
@tags: caffe python 在windows下配置caffe后,跑mnist手写数字识别的例子.发现train_lenet.sh不能运行. 那就写个python脚本替代吧. step1 定 ...