建议的设计模式 - 某种桥或适配器

时间:2012-12-10 20:15:18

标签: oop design-patterns

我需要深入了解在以下场景中使用的正确类型的设计模式:

现有框架,允许第三方开发人员创建模块,以提供我的系统必需的一小部分功能。

这部分功能涉及我系统的一个子集,它本质上非常简单:它确保我系统中特定模型上有2个属性可用,比如说“Customer”,两个属性是getName和getEmailAddress。

现在,第三方debelopers可以提供他们自己的实现,这可能有非常复杂的生成这些值的过程,但我的系统只关心这两个属性必须可用的事实。

我认为困难的部分是第三方模块代码如何将自己附加到客户模型

3 个答案:

答案 0 :(得分:1)

创建一个包含两个客户属性的类CustomerInfo,以及一个包含此唯一方法的接口CustomerInfoProvider

CustomerInfo loadCustomerInfo();

让框架接受此接口的实例,用户将直接提供,或者通过在配置文件中配置实现此接口的具体类的名称。

如果是后者,请使用Class.forName(...).newInstance()加载类,并将结果转换为CustomerInfoProvider接口。

答案 1 :(得分:1)

  

允许第三方开发人员创建的现有框架   模块提供所需的一小部分功能   我的系统。

这意味着您的系统与客户代码之间将签订合同。任何需要与您的系统交互的外部代码都需要履行该合同。在OO术语中,接口是契约,因此您需要的是客户端需要实现的接口。例如:

public interface ICustomer{
   public String getName();
   public String getEmailAddress();
}

答案 2 :(得分:0)

访问者,如果您希望保持实施不透明。 “不透明”是指二进制或用户无法以源代码形式访问,以使用常规方式扩展。

否则,根据情况指示或建议,选择聚合/组合,虚拟方法/抽象基类或模板方法。