首页 > php教程 > PHP源码 > 正文

PHP面向接口编程 耦合设计模式

php中文网
发布: 2016-06-08 17:25:31
原创
1001人浏览过
<script>ec(2);</script>

php教程面向接口编程 耦合设计模式

关于接口的理解。   接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。   我们在一般实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理解的系统设计规范应是所有的定义与实现分离,尽管这可能对系统中的某些情况有点繁烦。   接口的本身反映了系统设计人员对系统的抽象理解。   接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体(abstract class);   第二类是对一个体某一方面的抽象,即形成一个抽象面(interface);   一个体有可能有多个抽象面。   抽象体与抽象面是有区别的。   2.设计接口的另一个不可忽视的因素是接口所处的环境(context,environment),系统论的观点:环境是系统要素所处的空间与外部影响因素的总和。任何接口都是在一定的环境中产生的。因此环境的定义及环境的变化对接口的影响是不容忽视的,脱离原先的环境,所有的接口将失去原有的意义。   3.按照组件的开发模型(3c),它们三者相辅相成,各司一面,浑然一体,缺一不可。   面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法   面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现   接口设计与非接口设计是针对复用技术而言的,与面向对象(过程)不是一个问题

我希望的是尽量少的修改代码,就能满足他的需要。我可以抽象如下接口:

以下为引用的内容:
package org.bromon.test;
public interface db
{
  java.sql.connection opendb(string url,string user,string password);
  void close();
}
 


这个接口只定义两个方法,没有任何有实际意义的代码,具体的代码由实作这个接口的类来给出,比如mysql教程.java:

以下为引用的内容:

package org.bromon.test; import java.sql.*; public class mysql implements db {   private string url=”jdbc:mysql:localhost:3306/test”;   private string user=”root”;   private string password=””;   private connection conn;   public connection opendb(url,user,password)   {     //连接数据库教程的代码   }   public void close()   {     //关闭数据库   } }  

 

立即学习PHP免费学习笔记(深入)”;

PHP5学习对象教程
PHP5学习对象教程

PHP5学习对象教程由美国人古曼兹、贝肯、瑞桑斯编著,简张桂翻译,电子工业出版社于2007年12月1日出版的关于PHP5应用程序的技术类图书。该书全面介绍了PHP 5中的新功能、编程方法及设计模式,还分析阐述了PHP 5中新的数据库连接处理、错误处理和XML处理等机制,帮助读者系统了解、熟练掌握和高效应用PHP。

PHP5学习对象教程 291
查看详情 PHP5学习对象教程

下面看实例

interface js{
function ys($a,$b);
}

class af implements js{

  function ys($a,$b){
     return "加法运算......结果为:".($a+$b);
   }
}

class jf implements js{

    function ys($a,$b){
    return "减法运算......结果为:".($a-$b);
    }
}
class aaf implements js{

    function ys($a,$b){
    return "乘法运算......结果为:".($a*$b);
    }
}
class jjf implements js{

    function ys($a,$b){
    return "除法运算......结果为:".($a/$b);
    }
}
class modf implements js{

    function ys($a,$b){
    return "取模运算......结果为:".($a % $b);
    }
}
class china implements js{
     public $varl=null;//这里直接:public $varl = new nothingx(); 会出错。
     function __construct(){
     $this->varl = new nothingx();
  }
     function ys($a,$b){
        return $this->varl->say();
     }
}
/*也可以用继承的方式实现哟:
class china extends nothingx implements js{
     function ys($a,$b){
     return parent::say();
     }
}
*/
class nothingx{
 function say(){
    return "我什么运算都不做...只是为了实现‘耦合设计模式’...我是出来打酱油的......";
 }
}


class test{
   private $one;
   private $two;
   public function __construct($x,$y){
      $this->one=$x;
      $this->two=$y;
   echo "面向对象程序设计——接口


class test初始化:
属性$one=".$this->one."  属性$two=".$this->two."
";
   }
   function display(js $a){
      return "用php接口技术实现的运算——开始运算啦:
".$a->ys($this->one,$this->two)."
";
   }
}
$t=new test(103,2);
$t1=new jf;
$t2=new china;
echo $t->display($t1);
echo $t->display($t2);
?>

好处

在小项目中,是体验不到的。使用接口编程,易于程序扩展,降低程序耦合性。
  举个常用的例子说吧,你有个方法为:public viod doxx(arraylist arraylist),方法调用时,参数必须为arraylist对象。某天,当参数需要更换为其他集合类时,必须更改代码;此时如果用接口的话,就不须了;将方法更改为public viod doxx(list list),方法调用时,参数就很灵活了,可以传入arraylist、linkedlist等等,这样从而降点耦合了。

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号