什么是界面和包装?

时间:2012-12-06 03:09:26

标签: java design-patterns interface wrapper

我知道为什么要使用接口和包装器。

但我混淆了名字包装类...(“谁是包装?”我看到我不太清楚......)

public Interface A {
    void method();
}

public Class B implements A {
    void method() {
        doSomething();
    }
}

我对两件事感到困惑......

  
      
  1. 包装是类,所以B是包装器。

  2.   
  3. 我们经常看到(或者认为?)a.method()而不是b.method(),所以A是包装器。

  4.   

什么是包装?

一个?乙

和...

如何使用“Wrapper”或“W”命名A,B好?

A,AWrapper?还是B,BWrapper?或其他人......?

2 个答案:

答案 0 :(得分:4)

A是一个界面。 BInterface的具体实现。从你提供的代码中无法说出任何其他内容。

通过添加或简化包装类/ API的功能,Wrapper“包装”另一个类或API的功能。例如,Java中的Primitive Wrappers将有用的方法(如doubleValuecompareTo)添加到Java原语中。

您正在考虑Polymorphism

这就是我们可以说出的话:

A a = new B();
B b = new B();
List<A> stuffs = new ArrayList<A>();
stuffs.add(b);

旁注:

InterfaceClass不允许在Java中大写。你的声明应该是这样的:

public interface A {
  // methods
}

public class B implements A {
  // methods
}

答案 1 :(得分:2)

您的示例中的A或B都不能称为包装器。 A和B之间的关系是Inheritance。一个Wrapper类通常containsWrappee个对象。适配器和Facade模式是包装器的好例子。

有关Wrappers的详细讨论,请参阅this