ホームページ >バックエンド開発 >PHPチュートリアル >クラスコードを変更せずにクラスの機能を拡張しますか?
最初の写真
現在のアプリケーションは を使用していますyaf
框架,所有的控制器都继承
自Base_controller
, 但由于后期功能越来越多(权限管理、产品管理、日志管理等), 导致Base_controller
肥大化することはもうありません
もちろん、機能ごとに異なるクラスファイルを作成し、Base_controller
中初始化也能满足需求, 但这样各个功能和Base_controller
それらを強結合することもできるので、もっと良い解決策はないでしょうか。
今考えているのは、装饰模式
,(因为目前只会这个,妈蛋),
用具体的装饰类(权限管理,日志管理)来装饰Base_controller
, 使其具有这些功能, 但由于装饰模式要求被装饰者(Base_controller
), 和具体装饰者都继承自同一类, 然而现在Base_controller
已经继承自其它类了, 所以Base_controller
飾られた役を演じることはできない
それでは、私が一生懸命書いた機能クラス (権限管理、プロダクト管理、ログ管理) を装飾するには誰を使用すればよいでしょうか?
それでは、私は間違った方向に進んでいますか、装飾モードはここではまったく適していません、それとも他のデザインが必要ですか?返信内容:
現在のアプリケーションは を使用しています
肥大化することはもうありませんyaf
框架,所有的控制器都继承
自Base_controller
, 但由于后期功能越来越多(权限管理、产品管理、日志管理等), 导致Base_controller
それらを強結合することもできるので、もっと良い解決策はないでしょうか。 Base_controller
中初始化也能满足需求, 但这样各个功能和Base_controller
デコレータの役割を果たすことはできないということです装饰模式
,(因为目前只会这个,妈蛋),
用具体的装饰类(权限管理,日志管理)来装饰Base_controller
, 使其具有这些功能, 但由于装饰模式要求被装饰者(Base_controller
), 和具体装饰者都继承自同一类, 然而现在Base_controller
已经继承自其它类了, 所以Base_controller
それでは、私は間違った方向に進んでいますか、装飾モードはここではまったく適していません、それとも他のデザインが必要ですか?
PHP の特性を使用する
お誘いありがとうございます。
上記の特性は確かに解決策ですが、問題の鍵はここにあるわけではない可能性があります。
装飾モードの理解は不正確ですが、それは大きな問題ではなく、重要ではありません
実際の開発では BaseController が肥大化するという問題に遭遇したことはありません。これは通常、開発者のレベル (またはレルム) の結果であり、クラス コードを変更しない場合でも、この問題は発生します。解決することはできませんが、再構築する必要があります。