php中面向接口开发模式,PHP面向接口编程 耦合设计模式

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()

{

//关闭数据库

}

}

下面看实例

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等等,这样从而降点耦合了。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值