多个接口以Java扩展

我需要在Java中实现具有多个接口inheritance的Facade设计模式,或者是具有Bridge设计模式的正确Facade。 我知道这是可能的,因为我把它作为一个系统的一部分看到了,但我不太清楚它的实现。
这是我到目前为止的实现:

public interface IOne { public void methodOneIOne(); public void methodTwoIOne(); } 

它的实施:

 public class One implements IOne { @Override public void methodOneIOne() { System.out.println("methodOneIOne()"); } @Override public void methodTwoIOne() { System.out.println("methodTwoIOne()"); } } public interface ITwo { public void methodOneITwo(); public void methodTwoITwo(); } public class Two implements ITwo { @Override public void methodOneITwo() { System.out.println("methodOneITwo()"); } @Override public void methodTwoITwo() { System.out.println("methodTwoITwo()"); }} 

门面:

 public interface IFacade extends IOne, ITwo {} 

所以,从这里我不知道去哪里。 如果我创建一个实现IFacade的类,那么它将需要实现所有方法,这不是我想要的。

你真的想用你的门面课做什么? 如果您只是尝试传递大多数方法,可能会修改一些,那么动态代理可能就是您想要的。

否则你实际上必须实现IFacade所有方法,因为Java不允许你使用多重inheritance,因此你无法扩展OneTwo

如果我创建实现IFacade的类,那么如果需要实现所有方法,这不是我想要的。

为什么不? 你想要Facade做什么?

正如所写的那样,Facade的实现必须实现所有方法,但这并不意味着重复你为One和Two编写的所有代码。 只需使用组合:

 public class Facade implements IFacade { private IOne one; private ITwo two; public Facade(IOne one, ITwo two) { this.one = one; this.two = two; } @Override public void methodOneIOne() { this.one.methodOneInOne(); } // You see the point, I hope. } 

此设计的另一个好处是允许您随意更改Facade的实现:只需替换每个接口的不同实现。 这些可以是动态生成的代理或您可以想到的任何其他内容。 这就是设计界面的美妙之处。