加载类:
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 设计模式 例子的更多相关文章

  1. c#设计模式介绍

    序号 模式名称 模式描述 应用场景 例子 1 单例模式 (SigletonPattern) 保证一个类仅有一个实例,并提供一个访问它的全局访问点. • 单例类只能有一个实例. • 单例类必须自己创建自 ...

  2. 写给Python初学者的设计模式入门

    有没有想过设计模式到底是什么?通过本文可以看到设计模式为什么这么重要,通过几个Python的示例展示为什么需要设计模式,以及如何使用. 设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的 ...

  3. 设计模式之visitor模式,人人能懂的有趣实例

    设计模式,现在在网上随便搜都一大堆,为什么我还要写"设计模式"的章节呢? 两个原因: 1.本人觉得这是一个有趣的设计模式使用实例,所以记下来: 2.看着设计模式很牛逼,却不知道怎么 ...

  4. 装饰者模式——(head first 设计模式3)

    装饰者模式定义 装饰者模式动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 从定义来看,除了提到比继承更有弹性,其他的还是非常模糊,下面就先给出其UML类图. 从UML类 ...

  5. Head First设计模式——模板方法模式

    前言:本篇我们讲解模板方法模式,我们以咖啡和茶的冲泡来学习模板方法.关于咖啡另一个设计模式例子也以咖啡来讲解,可以看下:Head First设计模式——装饰者模式 废话不多说,开始进入模板方法模式. ...

  6. Java 文件IO

    文件IO Java IO    IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中    按操作数据分为 字节流和字符流        字符流的 ...

  7. Java:IO流之字符流缓冲区详解

    字符流缓冲区: 1.缓冲区的出现提高了对数据的读写效率: 2.对应类:BufferedWriter.BufferedReader: 3.缓冲区要结合流才可以使用: 4.在流的基础上对流的功能进行了增强 ...

  8. 抽象工厂(Abstract Factory),工厂方法(Factory Method),单例模式(Singleton Pattern)

    在谈工厂之前,先阐述一个观点:那就是在实际程序设计中,为了设计灵活的多态代码,代码中尽量不使用new去实例化一个对象,那么不使用new去实例化对象,剩下可用的方法就可以选择使用工厂方法,原型复制等去实 ...

  9. 面试(Java之IO与NIO)

    一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...

随机推荐

  1. A Regularized Competition Model for Question Diffi culty Estimation in Community Question Answering Services-20160520

    1.Information publication:EMNLP 2014 author:Jing Liu(在前一篇sigir基础上,拓展模型的论文) 2.What 衡量CQA中问题的困难程度,提出从两 ...

  2. mysql创建触发器

    触发器语句只有一句话 可以省略begin和end CREATE trigger `do_praise` after insert on praise for each row update post ...

  3. Hibernate Tools 自动生成hibernate的hbm文件

    本文有待商榷 当我们在新增插件的时候发现会出现duplicate location,意思是所选的anchive所包含的zip路径已经复用,现象如下: 如上图所示黄色标记部分“Duplicate loc ...

  4. js原型继承的几种方式

    1. 原型链继承 2,构造函数继承(对象冒充继承) 3,组合继承(原型链继承+构造函数继承) 4,原型式继承 5. 寄生组合式继承 一.原型链继承 function Show(){ this.name ...

  5. jquery 获取Select option 选择的Text和Value

    jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关设置 获取一组radio被选中项的值:var item = $(' ...

  6. iOS开发,系统自带的分享简单实现

    由于simulator设置里面没有新浪微博的选项,所以选择了真机调试,成功了.代码不多,包含头文件 没有配置登录信息的话,是没有作用的                                 ...

  7. Notes on 'Selective Search For Object Recognition'

    UijlingsIJCV2013, Selective Search For Object Recognition code 算法思想 利用分割算法将图片细分成很多region, 或超像素. 在这个基 ...

  8. ES6新特性:Javascript中的Map和WeakMap对象

    Map对象 Map对象是一种有对应 键/值 对的对象, JS的Object也是 键/值 对的对象 : ES6中Map相对于Object对象有几个区别: 1:Object对象有原型, 也就是说他有默认的 ...

  9. js 身份验证

    var idCardNoUtil = {     provinceAndCitys: {11:"北京",12:"天津",13:"河北",14 ...

  10. win7 系统无法复制粘贴解决方案

    用远程桌面登陆服务器不能在本机和远程服务器之间粘贴文本了,即不能从本机复制文本粘贴到服务器,也不能从服务器复制文本粘贴到本机. 以下是解决方法之一,试了几次都很管用户:在服务器上打开任务管理器,查看进 ...