门面模式也称之为外观模式,用户不需要了解里面的具体实现。
举个例子
发动机工厂能生产6at变速箱,8at变速箱10at变速箱。
1、没有用到设计模式
public interface Engine{
void doEngine();
}
public class SixAt implements Engine{
public String doEngine(){
system.out.println("制造6at");
}
}
public class EightAt implements Engine{
public String doEngine(){
system.out.println("制造8at");
}
}
public class TenAt implements Engine{
public String doEngine(){
system.out.println("制造10at");
}
}
2、用户使用
public static void main(String[] args){
Engine sixAt = new SixAt();
sixAt.doEngine();
Engine eightAt = new EightAt();
sixAt.doEngine();
Engine tenAt= new TenAt();
sixAt.doEngine();
}
从上,我们可以看到,当用户要使用哪个类时需要知道具体的实现类。
3、用上设计模式
public class Engine{
private SixAt sixAt;
private EightAt eightAt;
private TenAt tenAt;
public Engine(){
this.sixAt = new SixAt();
this.eightAt= new EightAt();
this.tenAt= new TenAt();
}
public String do6atEngine(){
system.out.println("制造6at");
}
public String do8atEngine(){
system.out.println("制造8at");
}
public String do10atEngine(){
system.out.println("制造10at");
}
}
4、这时候调用
public static void main(String[] args){
Engine engine = new Engine();
engin.do6atEngine();
engin.do8atEngine();
engin.do10atEngine();
}
从上可以看出用户无需再次关切具体的实现类而是直接调用门面给了什么方法,直接调用即可。