zoukankan      html  css  js  c++  java
  • PHP 单例 工厂模式 类的重载 抽象 接口

    设计模式:
        所谓设计模式,就是解决问题的“常规做法”,是一种认为较好的经验总结
    总厂模式
        我们可以设计一个工厂(类),该工厂的作用(任务)就是为人们生产各种对象,这种工厂通常只要指定类名,就可以据此获取一个该类的对象
    单例模式:
         应用中的某些需求:
           对于某些类,在使用他们的时候,从头到尾(程序的开始打结束)都只需要一个对象,就可以完成所有任务
           某个类,只允许其创建出一个对象,即使去进行多次创建,也只能得到一个对象
           $obj1 = new A();
           $obj2 = $obj1; //此时还是一个对象,$obk2只是最终指向了跟$obj1同样的对象
           $obj3 = new A();  //现在才有第二个对象
         一个对象还可以使用clone运算符进行克隆,则会生成新对象
    抽象类:
         在正常定义类的前年,加上关键字:abstract,那就构成抽象类
         abstract  class  类名{.....类的定义.....}
         抽象类是专门做父类的
    抽象方法:
         抽象方法就是一个没有方法体(也不含大括号)的方法定义“头”而已
         前面需加abstract
         比如:abstract  function  f1($x1, $y, $m) ;    //注意,后面一定有分号。
         作用:
            配合抽象类,来实现对下级类的行为规范,相当于要求下级去完成该功能,但自己不做
    抽象类抽象方法细节描述:
         1.如果一个方法定义为抽象方法,则其所在的类必须定义为抽象类
         2.子类继承自一个抽象类,则子类必须实现父类中所有的抽象方法,除非子类也继续作为抽象类
    PHP中的重载技术:
         1.通常面向对象语言的重载技术
            语法:在一个类中,有多个同名的方法,每个方法的参数不同而已,这种现象就被称为重载
             参数不同可以是:数量个数不同,类型不同,顺序不同
             比如:class A{
                        int function f1(int  x){.....}
                        int function f1(int x, int y){.....}
                        int function f1(string s   int m){.....}
                                              };
            属性重载:
                如果使用一个不存在的属性,就会去自动调用类中预先定义好的某个方法以处理数据
            方法重载
                如果使用一个不存在的方法,就会去自动调用类中预先定义好的某个方法以处理该行为
         2.属性重载
             形式:
                1.取值: $v1 = 对象->属性   //如果属性不存在会调用__get()方法           
                2.赋值: 对象->属性 =xx值   //如果属性不存在会调用__set()方法  
                3.判断是否存在:isset(对象->属性)    //如果属性不存在会调用__isset()方法  
                4.销毁:unset(对象->属性)    //如果属性不存在会调用__unset()方法  
                   
         3.方法重载
            当使用一个对象调用一个不存在的普通方法的时候,会自动调用预先定义好的__call方法
            当使用一个对象(类)调用以个不存在的静态方法的时候,会自动调用预先定义好的__callStatic方法
            
         上面几个魔方都称为魔术方法:
             __get(), __set(),  __isset(), __unset(),  __call(),  __callstatic();
    接口 interface:
      类:有属性,有方法;有类常量;
      抽象类:有属性,有方法;有类常量;还可以有抽象方法(只有方法头);
      更抽象的类就是接口:有接口常量;还可以有抽象方法(只有方法头);
      接口可以看作是抽象类的更高层面的抽象规范,不考虑接口常量,那就相当于规定了下级类需要做什么
      接口可以实现多继承(多实现) 类不行
      一个类只能继承一个父类,但可以实现多个“上级接口”,语法形式:class  类A  extends  类B  implements  接口1,接口2,.... { 。。。类定义语句。。。}
      一个接口同样可以继承另一个接口(也是单继承):interface  接口1  extends 接口2  {接口定义}

  • 相关阅读:
    java编程思想概括(第二章)一切都是对象
    java编程思想概括(第六章)复用类
    .net程序在无.net环境下运行
    一个让人哭笑不得的触发器
    iReaper for android
    博易博客删除垃圾评论
    解决博易2.0版分页问题
    允许更新此预编译站点的作用
    java包的命名规则技巧
    简易拨号器iCall
  • 原文地址:https://www.cnblogs.com/xzz123-/p/9149190.html
Copyright © 2011-2022 走看看