写一个模型工厂类php,PHP中“工厂模式”编程设计模型详解

本文详细介绍了PHP中的工厂模式,通过示例展示了如何利用工厂模式实现代码的封装和扩展,以及如何解决在计算器功能扩展时遇到的问题。通过引入抽象基类、继承和多态,降低了代码耦合度,提高了代码可维护性。同时,提出了使用工厂类来动态实例化对象,解决了根据用户输入操作符创建相应对象的难题。
摘要由CSDN通过智能技术生成

PHP编程开发模式-工厂模式详解

PHP工厂模式:

①抽象基类:类中定义抽象一些方法,用以在子类中实现

②继承自抽象基类的子类:实现基类中的抽象方法

③工厂类:用以实例化对象

1 采用封装方式

2

3 getMessage();

36 }

37 }

38 }

39 $test=new Calc();

40 // echo $test->calculate(2,3,'+');//打印:5

41 echo $test->calculate(5,0,'/');//打印:您输入有误:除数不能为0

42 ?>

优点:以上代码使用了面向对象的封装特性,只要有了include这个类,其他页面就可以随便使用了

缺点:无法灵活的扩展和维护

比如:想要增加一个“求余”运算,需要在switch语句块中添加一个分支语句,代码需要做如下改动

1 添加分支语句

2

3 getMessage();

17 }

18 }

19 }

20 ?>

代码分析:用以上方法实现给计算器添加新的功能运算有以下几个缺点

①需要改动原有的代码块,可能会在为了“添加新功能”而改动原有代码的时候,不小心将原有的代码改错了

②如果要添加的功能很多,比如:‘乘方’,‘开方’,‘对数’,‘三角函数’,‘统计’,或者添加一些程序员专用的计算功能,比如:And, Or, Not, Xor,这样就需要在switch语句中添加N个分支语句。想象下,一个计算功能的函数如果有二三十个case分支语句,代码将超过一屏,不仅令代码的可读性大大降低,关键是,为了添加小功能,还得让其余不相关都参与解释,这令程序的执行效率大大降低

解决途径:采用OOP的继承和多态思想

1 工厂模式的初步实现

2 getMessage();

48 }

49 }

50 }

51 ?>

这里采用了面向对象的继承特性,首先声明一个虚拟基类,在基类中指定子类务必实现的方法(getValue())

分析:通过采用面向对象的继承特性,我们可以很容易就能对原有程序进行扩展,比如:‘乘方’,‘开方’,‘对数’,‘三角函数’,‘统计’等等。

我们只需要另外写一个类(该类继承虚拟基类),在类中完成相应的功能(比如:求乘方的运算),而且大大的降低了耦合度,方便日后的维护及扩展

现在还有一个问题未解决,就是如何让程序根据用户输入的操作符实例化相应的对象呢?

解决办法:使用一个单独的类来实现实例化的过程,这个类就是工厂

代码如下:

1 getValue(23,0);

27 echo $result;

28 ?>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值