2012-08-30 121 views
1

我在系统中有两个实体表示。这适用于适配器模式吗?

表示A在整个系统中用作现代的首选实现。

表示B用于迎合遗留系统中的怪癖。

我想从A到B的翻译发生在坚持实体时发生。

我可以使用什么模式的实现?

实现封装翻译功能的“适配器”可能是正确的吗?还是有更好的术语/方法?

+0

适配器通常用于调整接口,而不是整个对象,我认为其中一个工厂模式可能更适合 – Filip

+0

如果它只是为了坚持我会说存储库模式是一个很好的适合 – jgauffin

回答

0

您可能希望将适配器与工厂结合起来,或者只是通过正常的继承。

从首选实现中提取接口A,然后实现一个包装类。

public interface A { 
    <methods> 
} 

public class PreferredImplementation implements A { 
    <methods> 
} 

public class AdaptorForOldClass implements A { 
    private final OldClass wrapped; 

    public AdaptorForOldClass(final OldClass toWrap) { 
    this.wrapped = toWrap; 
    } 

    <methods> 
} 
0

我认为你的要求是只有在坚持它的时候将A类映射到B类。为此,我认为你可以使用数据传输对象,然后你的持久层可以完成从DTO到B类的映射。除非你有更多的需求,否则我实在看不到使用适配器设计模式。说明。