模式/设计方法从各种未知来源检索特定对象

时间:2015-02-17 16:42:15

标签: java design-patterns

我正在寻找一种从具有共同父级的可变数量的类中检索特定类的对象的有效方法。

简单来说 寻找ClassA的对象

B类C和D都有不同名称的方法来获得所述对象。 有时我可能需要访问其中的其他对象才能找到我想要的对象。

我正在制作一个名为

的单身人士课程

ObjectRetriever,带有一个名为getObjectFromSource(Object source)的方法

该方法目前只是一系列ifC源的实例 做特定的行为。

我仅限于可以分享多少来源,但希望有一个现有的模式/设计方法。

2 个答案:

答案 0 :(得分:0)

  1. 如果您无法控制A-D类,我相信您会想要使用Facade模式,因为这样您可以慢慢扩展用于简化对此API的访问的方法集合。
  2. 如果您确实可以控制A-D类,那么最好通过添加包含getA方法的接口来重新调整类层次结构。
  3.   

    引用维基百科的Facade Pattern参考:   http://en.wikipedia.org/wiki/Facade_pattern

         

    外观图案(或外观图案)是一种软件设计模式   常用于面向对象的编程。这个名字是类比的   到建筑立面。

         

    外观是一个为更大的界面提供简化界面的对象   代码体,例如类库。门面可以:

         

    使软件库更易于使用,理解和测试,因为   门面有便捷的常见任务方法;使图书馆更多   可读,出于同样的原因;减少外部代码的依赖性   因为大多数代码都使用了外观,所以库的内部工作原理   允许更灵活地开发系统;包好了   设计的API集合与一个精心设计的API(按照   任务需要)。 Facade设计模式通常在系统使用时使用   非常复杂或难以理解,因为系统很大   相互依赖的类的数量或其源代码不可用。   这种模式隐藏了较大系统的复杂性并提供了   一个更简单的客户端接口。它通常涉及一个单一的   包装器类,包含客户端所需的一组成员。   这些成员代表Facient客户端访问系统   隐藏实现细节。

答案 1 :(得分:0)

如果你可以修改C,B和D类,你应该创建一个具有检索有问题对象的方法的接口。

像这样:

public interface SomeNeatName{ A getA();}


public class B implements SomeNeatName {
    getA(){
        return nameOfVariableHoldingA;
    }
}