Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 需要设计模式-多个可交换库的外观_Oop_Design Patterns - Fatal编程技术网

Oop 需要设计模式-多个可交换库的外观

Oop 需要设计模式-多个可交换库的外观,oop,design-patterns,Oop,Design Patterns,我有一个使用facade模式与之交互的第三方库。现在,我有一个进一步的要求,即第三方库可以很容易地更改(而不是在运行时),因此facade需要能够处理这个问题 实现这一点的最佳方法是什么?我建议创建需要是一个接口(或抽象类,无论您使用哪种语言)和多个实现的Facade。每个实现都是一个具体的第三方库: 以为动力,我建议创建一个需要有多个实现的接口(或抽象类,无论您使用哪种语言)的Facade。每个实现都是一个具体的第三方库: 由于展示得很好,你介意我问一下你是如何制作这个图形的吗?@Toma

我有一个使用facade模式与之交互的第三方库。现在,我有一个进一步的要求,即第三方库可以很容易地更改(而不是在运行时),因此facade需要能够处理这个问题


实现这一点的最佳方法是什么?

我建议创建需要是一个接口(或抽象类,无论您使用哪种语言)和多个实现的
Facade
。每个实现都是一个具体的第三方库:


为动力,我建议创建一个需要有多个实现的接口(或抽象类,无论您使用哪种语言)的
Facade
。每个实现都是一个具体的第三方库:


由于

展示得很好,你介意我问一下你是如何制作这个图形的吗?@TomaszNurkiewicz-在这个设计中,你会在哪里看到决定使用哪个立面的开关?有一个客户可以使用这些外观中的任何一个。您希望在客户机中看到某种工厂方法吗?或者它会像使用类常量定义应该使用哪个面或xml文件中保存的配置值那样简单吗?@user1189880:您的所有建议都是有效的。您可以使用工厂、配置选项、XML配置。如果您使用的是任何类型的,则这是一个典型的情况。从技术上讲,你甚至可以在运行时切换外观。很好的演示文稿,你介意我问一下你是如何制作图形的吗?@TomaszNurkiewicz-在这个设计中,你会在哪里看到决定使用哪个外观的切换?有一个客户可以使用这些外观中的任何一个。您希望在客户机中看到某种工厂方法吗?或者它会像使用类常量定义应该使用哪个面或xml文件中保存的配置值那样简单吗?@user1189880:您的所有建议都是有效的。您可以使用工厂、配置选项、XML配置。如果您使用的是任何类型的,则这是一个典型的情况。从技术上讲,您甚至可以在运行时切换外观。