PHP设计模式六大原则之接口隔离原则
2021-08-10文远技术博客382417
1、什么是接口隔离原则
客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上2、解决什么问题
类A通过接口I实现多个方法,类B也通过接口I实现多个方法,如果接口I对于类A和类B来说不是最小接口,则类A、类B必须去实现他们不需要的方法。3、代码示例
//把接口分成3个,I是通用接口,P、Q分别对应C、D类
interface I
{
public function action1();
}
interface P
{
public function action2();
public function action3();
}
interface Q
{
public function action4();
public function action5();
public function action6();
}
class C implements I,P
{
public function action1()
{
echo "C类的action1方法".PHP_EOL;
}
public function action2()
{
echo "C类的action2方法".PHP_EOL;
}
public function action3()
{
echo "C类的action3方法".PHP_EOL;
}
}
class D implements I,Q
{
public function action1()
{
echo "B类的action1方法".PHP_EOL;
}
public function action4()
{
echo "B类的action4方法".PHP_EOL;
}
public function action5()
{
echo "B类的action5方法".PHP_EOL;
}
public function action6()
{
echo "B类的action6方法".PHP_EOL;
}
}
class A
{
public function exec1(I $i)
{
$i->action1();
}
public function exec2(I $i)
{
$i->action2();
}
public function exec3(I $i)
{
$i->action3();
}
}
class B
{
public function exec1(I $i)
{
$i->action1();
}
public function exec4(I $i)
{
$i->action4();
}
public function exec5(I $i)
{
$i->action5();
}
public function exec6(I $i)
{
$i->action6();
}
}
class client
{
public function run()
{
$A = new A();
$A->exec1(new C);
$A->exec2(new C);
$A->exec3(new C);
$B = new B();
$B->exec1(new D);
$B->exec4(new D);
$B->exec5(new D);
$B->exec6(new D);
}
}
$client = new client();
$client->run();
4、与单一职责原则的区别
1、单一职责原则原注重的是职责;而接口隔离原则注重对接口依赖的隔离。2、单一职责原则主要是约束类,其次才是接口和方法
3、它针对的是程序中的实现和细节;而接口隔离原则主要约束接口接口,主要针对抽象,针对程序整体框架的构建。
相关文章
文章评论
看完文章了吗?谁便说点吧
发表
暂无评论