php实现简单工厂模式「建议收藏」

php实现简单工厂模式「建议收藏」通过简单工厂模式的开发,能够较大程度的降低代码间的耦合度,提高代码的可扩展性。下面是做了一个四则运算计算器的简单工厂模式。先写一个工厂类,加、减、乘、除。。。。这些运算均可在工厂类里去生产。<?php require’./Calculate.class.php’; classOperationFactory { publicstaticfunctioncreat…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

通过简单工厂模式的开发,能够较大程度的降低代码间的耦合度,提高代码的可扩展性。下面是做了一个四则运算计算器的简单工厂模式。

先写一个工厂类,加、减、乘、除。。。。这些运算均可在工厂类里去生产。

<?php
	require './Calculate.class.php';
	class OperationFactory
	{
		public static function createOper(string $operation)
		{
			$ope = null;
			switch($operation) {
				case '+':
					$ope = new Add();
					break;
				case '-':
					$ope = new Sub();
					break;	
				case '*':
					$ope = new Mul();
					break;
				case '/':
					$ope = new Div();
					break;		
			}
			return $ope;
		}
	}

正常每一个运算应该单独写一个类,在工厂类里相应的引入运算类文件,这里我做的比较简单,直接写了一个calculate类来放。

<?php
	require "./Operation.class.php";
	class Add extends Operation
	{
		public function getResult()
		{
			return $this->numA + $this->numB;
		}
	}

	class Sub extends Operation
	{
		public function getResult()
		{
			return $this->numA - $this->numB;
		}
	}

	class Mul extends Operation
	{
		public function getResult()
		{
			return $this->numA * $this->numB;
		}
	}

	class Div extends Operation
	{
		public function getResult()
		{
			return $this->numA / $this->numB;
		}
	}

在这里将运算类抽象成一个类。其他具体的运算类均去继承他。这样代码的封装性更好。

<?php
	abstract class Operation
	{
		private $numA;

		private $numB;

		public function __set($property, $value)
		{
			if (property_exists($this, $property)) {
				$this->$property = $value; 
				
			}
		}

		public function __get($property)
		{
			if (property_exists($this, $property)) {
				return $this->$property;
			}	

		}

		abstract function getResult();
		
	}

最后我们在客户端调用就可以了

<?php

	require_once"./OperationFactory.class.php";
	$ope = OperationFactory::createOper("+");

	$ope->numA = 12;

	$ope->numB = 23;

	echo $ope->getResult();

这样就将客户端,工厂,运算类,运算符类的耦合度降低了很多,当需要增加其他运算的时候,只需要在工厂类里增加相应的生产线,然后去扩展一个运算,客户端直接调用就可以了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164371.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ubuntu如何卸载docker_ubuntu卸载干净

    ubuntu如何卸载docker_ubuntu卸载干净Ubuntu卸载Docker方法卸载旧版本的方法:旧版本的docker名字叫docker,docker.io,或者docker-engine#删除docker命令acestang@acestang:~$sudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc#删除docker默认安装的文件acestang@acestang:~$sudorm-rf/var/lib/docker/#通过doc

    2022年10月21日
  • lvs环境搭建

    lvs环境搭建参考:https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119665http://www.cnblogs.com/klb561/p/9215667.html补充了设置vip的方法以及一些解释性东西。 负载均衡集群是loadbalance集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、…

  • 数据结构与算法(2)

    数据结构与算法(2)

    2021年11月12日
  • 运行代码后出现Process finished with exit code 0是为什么?

    运行代码后出现Process finished with exit code 0是为什么?

    2021年10月21日
  • 拉格朗日三次插值公式_差值函数

    拉格朗日三次插值公式_差值函数第一部分:问题分析(1)实验题目:拉格朗日插值算法具体实验要求:要求学生运用拉格朗日插值算法通过给定的平面上的n个数据点,计算拉格朗日多项式Pn(x)的值,并将其作为实际函数f(x)的估计值。用matlab编写拉格朗日插值算法的代码,要求代码实现用户输入了数据点(xi,f(xi))、插值点之后,程序能够输出插值点对应的函数估值。(2)实验目的:让同学们进一步掌握拉格朗日插值算法的原理以及运算过程,并且通过matlab编程培养实际的上机操作能力和代码能力。第二部分:数学原理要估计任一点..

    2022年10月31日
  • AutoreleasePool的那些事

    AutoreleasePool的那些事

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号