Xok*_*oke 1 java design-patterns facade
我需要在Java中实现具有多个接口继承的Facade设计模式,或者是具有Bridge设计模式的正确Facade.我知道这是可能的,因为我把它作为一个系统的一部分看到了,但我不记得实现得很好.
这是我到目前为止的实现:
public interface IOne {
public void methodOneIOne();
public void methodTwoIOne();
}
Run Code Online (Sandbox Code Playgroud)
它的实施:
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()");
}}
Run Code Online (Sandbox Code Playgroud)
门面:
public interface IFacade extends IOne, ITwo {}
Run Code Online (Sandbox Code Playgroud)
所以,从这里我不知道去哪里.如果我创建一个实现IFacade的类,那么它将需要实现所有方法,这不是我想要的.
如果我创建实现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.
}
Run Code Online (Sandbox Code Playgroud)
此设计的另一个好处是允许您随意更改Facade的实现:只需替换每个接口的不同实现.这些可以是动态生成的代理或您可以想到的任何其他内容.这就是设计界面的美妙之处.