为什么学习设计模式:
  1,更深入的了解面向对象的思想
  2,有利于开发出扩展性强的东西

  

  什么是设计模式:经常出现的典型场景的典型解决方案,就是设计模式。举个例子生活中的设计模式:比如泡妞思路,象棋招数等。那么如何学习设计模式?典型场景--》典型问题--》典型解决方法

多态

  多态是一个生物学上的概念,指同一种类的多种表现形态,如:鲫鱼一般在一斤左右,鲢鱼普遍在十斤以上,在面向对象中,指某种对象(比如一种老虎)实例的不同表现形态,比如有的虎会爬树,有的则不会。在强类型语言java中,函数参数,函数的返回值,都是定死的,而当一个类想实现不同的处理时,我们通常只申明抽象类,具体的工作由子类对象来完成,因为子类属于父类,所以我们在使用时,传入父类对象就可以实现不同的功能,这是java的多态。php是弱类型语言,一个变量没有类型,你装什么都行,同理,传参也没有强制类型,传什么都行,所以对于php动态语言,不是多态,而是变态,为了让php不这么灵活,我们对参数类型做限制,参数定为父类,传其子类。本身php语言就是多态的,在php5.3以后,引入了对象类型的参数检测(只能检测对象所属的类),这对php来说,限制了灵活性,达到了java中多态的效果

思考 :多态其实就是指抽象的申明父类,具体的工作由子类对象完成,这样不同的子类对象完成,有不同的特点

待续。。。

php面向对象设计模式的更多相关文章

  1. 面向对象设计模式纵横谈:Singelton单件模式(笔记记录)

       李建忠老师讲的<面向对象设计模式纵横谈>,早就看过了,现在有了时间重新整理一下,以前的博客[赛迪网]没有了,现在搬到博客园,重新过一遍,也便于以后浏览. 设计模式从不同的角度分类会得 ...

  2. C#面向对象设计模式纵横谈——1.面向对象设计模式与原则

    一:设计模式简介 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心. ---- Christopher Alexander 软件设计领域设计模式: 设计模式描述了软件设计过 ...

  3. 面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)

         今天是设计模式的第二讲,抽象工厂的设计模式,我们还是延续老办法,一步一步的.演变的来讲,先来看看一个对象创建的问题. 1.如何创建一个对象 常规的对象创建方法: 这样的创建对象没有任何问题, ...

  4. 面向对象设计模式之Flyweight享元模式(结构型)

    动机:采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行代价——主要指内存需求方面的代价.如何在避免大量细粒度对象问题的同 时,让外部客户程序仍然能够透明地使用面向对象的 ...

  5. 面向对象设计模式——观察者(OBSERVER)模式

    定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.  Observer模式描述了如何建立这种关系.这一模式中的关键对象是目标(subject ...

  6. PHP设计模式:类自动载入、PSR-0规范、链式操作、11种面向对象设计模式实现和使用、OOP的基本原则和自动加载配置

    一.类自动载入 SPL函数 (standard php librarys) 类自动载入,尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_registe ...

  7. 面向对象设计模式纵横谈:Bridge 桥接模式(笔记记录)

    桥接模式是一个比较难理解的设计模式,设计和分析的时候也不容易把握,咱们听听“李建忠”老师是怎么来讲的.我们还是从演变的角度来说问题,一步一步的来把问题说清楚.先谈谈“抽象”和“实现”的关系. 抽象与实 ...

  8. 面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)

    从耦合关系谈起 耦合关系直接决定着软件面对变化时的行为 -模块与模块之间的紧耦合使得软件面对变化时,相关模块都要随之更改 -模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其 ...

  9. C#面向对象设计模式纵横谈——6.Prototype 原型模式(创建型模式)

    动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作.由于需求的变化,这些对象经常面临着剧烈的变化,但他们却拥有比较稳定一致的接口. 如何应对这种变化?如何向“客户程 ...

随机推荐

  1. Maven 的安装配置

    Maven 的安装配置 一.在安装 Maven 之前,先确保JDK1.7及以上版本并且配置好环境变量. 二.下载maven的bin,在apache官方网站可以下载. 1.首先去官网下载 Maven:h ...

  2. svn 规范apk的生成命名

    第一步:新建SVNVersion.gradle  放置于build.gradle统计目录下面 /*task svnversion { description 'Get SVN revision num ...

  3. Flex编译探索:FLEXSDK自带编译器与MAVEN插件Flex-mojos

    最近为了持续集成,想将flex的编译形成自动化.所以做了一些探索,虽然最后放弃了,但也有一些认识,写出来可以少走一些弯路. Flex的编译都是基于mxmlc编译机制 flex-mojos也是基于mxm ...

  4. Linux内核学习笔记2——Linux内核源码结构

    一 内核组成部分 内核是一个操作系统的核心,主要由五个部分组成:进程调度,内存管理,虚拟文件系统,网络结构,进程间通信. 1.进程调度(SCHED) 控制进程对CPU的访问.当需要选择下一个进程运行时 ...

  5. vmware下linux 如何添加硬盘

    1.在虚拟机的设置中增加一块硬盘.   setting -> add disk -> create a new virtual disk -> SCSI   设定大小,这里给3G:更 ...

  6. HW4.27

    public class Solution { public static void main(String[] args) { int count = 0; for(int i = 2001; i ...

  7. java模拟DVD管理器

    import java.util.*;import java.text.*;class DVDSet{    String[] name = new String[50]; //名字    int[] ...

  8. 理解position 绝对定位和相对定位

    一.position的三种取值 1.取值 Position :   static /  absolute / fixed / relative static:静态   absolute:绝对定位    ...

  9. Nginx的事件处理机制

    Nginx的事件处理机制:对于一个主要的webserver来说,事件通常有三种类型,网络事件.信号.定时器. 首先看一个请求的基本过程:建立连接---接收数据---发送数据 .再次看系统底层的操作 : ...

  10. MVC-控制器向View传值的三种方法

    1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResult Index() { DateTime date = DateTime.Now; return ...