>  기사  >  백엔드 개발  >  간단한 팩토리 패턴의 PHP 구현 C# 간단한 팩토리 패턴 팩토리 패턴 java java 간단한 팩토리 패턴 예제

간단한 팩토리 패턴의 PHP 구현 C# 간단한 팩토리 패턴 팩토리 패턴 java java 간단한 팩토리 패턴 예제

WBOY
WBOY원래의
2016-07-29 08:54:591371검색

	简单工厂模式又叫静态工厂方法模式,主要作用是通过一个简单工厂类来实例化(创建)各个类的对象,而不需要通过new来实例化对象。优点在于,工厂类中包含了一定的逻辑判断,会根据客户端的选择条件动态实例化相关的类。缺点在于,当需要增加新的功能类时,需要去修改工厂类。

以下内容以一个简单的计算器程序作为案例分析。第一步,定义Operation,是一个父类,有两个属性,表示用于计算的两个参数。

<?php
/*
* 计算类
*/
class Operation{
	private $numA=0;
	private $numB=0;
	public function setNumA($numA)
	{
		$this->numA=$numA;
	}

	public function getNumA()
	{
		return $this->numA;
	}

	public function setNumB($numB)
	{
		$this->numB=$numB;
	}

	public function getNumB()
	{
		return $this->numB;
	}
}
?>

두 번째 단계는 작업을 구현하는 메서드를 선언하는 인터페이스를 정의하는 것입니다.

<?php
/*
*工厂接口
*/
interface InterOperate{
	function getResult();
}
?>

세 번째 단계는 추가입니다. 연산 클래스(뺄셈 클래스, 곱셈 클래스, 트리거 클래스 등 생략)

<?php

/**
* 加法运算类
*/
include_once "IOperate.php";
include_once &#39;Operation.php&#39;;
class OperationAdd extends Operation implements InterOperate
{
	function getResult()
	{
		$result=$this->getNumA()+$this->getNumB();
		return $result;
	}
}

?>

마지막으로 다양한 클래스의 객체 인스턴스를 생성하기 위한 간단한 팩토리 클래스를 정의합니다. 일반적으로 간단한 팩토리 클래스에서 반환된 개체에는 공통 부모 클래스가 있습니다. 이 예에서 공통 상위 클래스는 Operation 클래스이고 덧셈 클래스와 뺄셈 클래스는 모두 Operation의 하위 클래스입니다.

<?php
include_once "OperationAdd.php";
include_once "OperationMinus.php";
class SimpleFactory {
	static function createAdd()
	{
		return new OperationAdd;
	}

	static function createMinus()
	{
		return new OperationMinus;
	}
}

?>

클라이언트 코드는 다음과 같습니다.

<?php
/*
*	客户端代码
*/
include_once "OperationAdd.php";
include_once &#39;Operation.php&#39;;
include_once &#39;SimpleFactory.php&#39;;

$op=SimpleFactory::createAdd();
$op->setNumA(2);
$op->setNumB(4);
echo $op->getResult();

$om=SimpleFactory::createMinus();
$om->setNumA(45);
$om->setNumB(34);
echo "<br>";
echo $om->getResult();
?>

위 내용은 간단한 팩토리 패턴의 내용을 포함하여 간단한 팩토리 패턴의 PHP 구현을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.