如何简化 PHP class
How to simplify a PHP class
我目前正在开发一个会计程序,其中为多个操作(报价、订单确认、送货单等)创建了不同的 PDF。我为此创建了一个 class“PDF”并创建了一个public 每个操作函数。要创建送货单,我执行以下操作:
$PDF = new PDF();
$PDF->createDeliveryNote();
但是,我现在遇到一个问题,class 逐渐变得混乱。每个函数大约有 200 行,class 总共有 2000 行。我现在的问题是:如何让我的 PDF class 更清晰?
对于这种情况,我会使用 Strategy
设计模式 https://designpatternsphp.readthedocs.io/en/latest/Behavioral/Strategy/README.html
类似于:
interface PdfOperationInterface
{
public function create()
}
class OrderPdfOperation implement PdfOperationInterface
{
public function create()
{
// order logic
}
}
class OfferPdfOperation implement PdfOperationInterface
{
public function create()
{
// offer logic
}
}
使用handler或者以某种方式只要能得到预期的操作实例,比如使用Factory或者Pool of operations等
class PdfOperationHandler
{
private $operation;
public function __construct(PdfOperationInterface $operation) {
$this->operation = $operation;
}
public function operate()
{
$this-operation->create();
}
}
用法:
$hander = new PdfOperationHandler(new OfferPdfOperation());
$hander->operate();
我目前正在开发一个会计程序,其中为多个操作(报价、订单确认、送货单等)创建了不同的 PDF。我为此创建了一个 class“PDF”并创建了一个public 每个操作函数。要创建送货单,我执行以下操作:
$PDF = new PDF();
$PDF->createDeliveryNote();
但是,我现在遇到一个问题,class 逐渐变得混乱。每个函数大约有 200 行,class 总共有 2000 行。我现在的问题是:如何让我的 PDF class 更清晰?
对于这种情况,我会使用 Strategy
设计模式 https://designpatternsphp.readthedocs.io/en/latest/Behavioral/Strategy/README.html
类似于:
interface PdfOperationInterface
{
public function create()
}
class OrderPdfOperation implement PdfOperationInterface
{
public function create()
{
// order logic
}
}
class OfferPdfOperation implement PdfOperationInterface
{
public function create()
{
// offer logic
}
}
使用handler或者以某种方式只要能得到预期的操作实例,比如使用Factory或者Pool of operations等
class PdfOperationHandler
{
private $operation;
public function __construct(PdfOperationInterface $operation) {
$this->operation = $operation;
}
public function operate()
{
$this-operation->create();
}
}
用法:
$hander = new PdfOperationHandler(new OfferPdfOperation());
$hander->operate();