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

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

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

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

(0)
上一篇 2022年7月25日 下午11:16
下一篇 2022年7月25日 下午11:36


相关推荐

  • 《Effective C++ 》学习笔记——规定10「建议收藏」

    《Effective C++ 》学习笔记——规定10

    2022年1月17日
    49
  • 在微型计算机中1gb等于多少字节,1GB等于多少字节「建议收藏」

    在微型计算机中1gb等于多少字节,1GB等于多少字节「建议收藏」1GB=1073741824字节。1KB=1024字节1M=1024KB1G=1024MB一小组相邻的二进制数码称为字节。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。扩展资料:数据的存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个…

    2022年5月9日
    74
  • 没有网线情况下使用树莓派连接WiFi

    没有网线情况下使用树莓派连接WiFi没有网线情况下使用树莓派连接WiFi烧录系统后,在boot/文件夹下创建wpa_supplicant.conf文件添加代码:country=CNctrl_interface=DIR=/var/run/wpa_supplicantGROUP=netdevupdate_config=1在尾部添加network={ssid=”你无线的名字”//无线名称psk=”你无线的密码”//无线密码}树莓派开机,可自动连接WiFi…

    2022年5月6日
    100
  • tomcat配置和使用

    tomcat配置和使用tomcat配置:https://blog.csdn.net/qq_39081974/article/details/78803919配置问题解决:https://blog.csdn.net/gyp0307/article/details/821945261、JavaWebJavaweb,是用java技术来解决相关web互联网领域的技术的总称。web包括:web服务器和web客户…

    2022年7月18日
    20
  • 扣子coze老黄历教程

    扣子coze老黄历教程

    2026年3月12日
    4
  • vs2017 c语言 安装教程,Visual Studio 2017 IDE安装使用图文教程「建议收藏」

    vs2017 c语言 安装教程,Visual Studio 2017 IDE安装使用图文教程「建议收藏」本文为大家分享了VisualStudio2017IDE的安装与最基本使用,供大家参考,具体内容如下首先,进入VisualStudio的官网下载最新版本的VSIDE(目前是VS2017):VS2017下载地址打开网页,点击红色画笔圈起的按钮然后会下载下来一个文件,点击它,会弹出一个这样的窗口点击“继续”,稍等一小会之后正式进入安装界面然后点击红圈内的“安装”VisualStudioCommu…

    2022年5月13日
    126

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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