漫談設計模式之組合模式
一、什麽是設計模式、為什麽要使用它
對設計模式的解釋有很多,在這裏我按個人的理解闡述一下。設計模式就是一些常見問題的優秀實踐,一套按面向接口嚴格實現的優秀方法,是經過實踐認證的、高效的、解耦的解決方案。那麽為什麽要使用它,一個設計模式定義了一個問題、定義了一個解決方案、是經過測試的、能促進良好的設計,具有很高的靈活性和可重用性。
二、什麽是組合模式
將一組對象組合為可像單個對象一樣被使用的結構。在有些書中說是屬性結構,我覺得這個限制太死,只要能靈活的組合多個對象,但並不影響使用效率,並且具有很高的可重用性和靈活性都可以當做組合模式使用。
三、組合模式的具體實踐
我這裏有一個場景,一般api之間互相交互數據的時候回需要簽名,但不同業務之間簽名是不一樣的,但簽名的原理是一樣的,這種情況能否使用組合模式。我這裏按組合模式實現了該功能。
<?php /** * 遵循面向接口編程準則 * Class SignatureInterface */ namespace Logic\Signature; interface SignatureInterface { public function getSecretKey(); } ?> <?php /** * Service 簽名 * Class ServiceSignature */ namespace Logic\Signature; class ServiceSignatureKey implements SignatureInterface { public $_secretKey = null; public function __construct () { $this->_secretKey = ‘Service‘; } public function getSecretKey () { return $this->_secretKey; } } ?> <?php /** * SMS 簽名 * Class SmsSignature */ namespace Logic\Signature; class SmsSignatureKey implements SignatureInterface { public $_secretKey = null; public function __construct () { $this->_secretKey = [email protected]
本文出自 “我相信” 博客,請務必保留此出處http://mrcelite.blog.51cto.com/2977858/1931031
漫談設計模式之組合模式