外观模式

举报
小鲍侃java 发表于 2021/09/09 23:32:14 2021/09/09
【摘要】 定义:它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。(体现为service和dao,一个service可以调用多个dao) 目的:对多个方法进行封装,提供出一个统一的接口。 优点:1.实现客户端和子系统的松耦合,让子系统内部的模块能更容易扩展和维护     &...

定义:它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。(体现为service和dao,一个service可以调用多个dao)

目的:对多个方法进行封装,提供出一个统一的接口。

优点:1.实现客户端和子系统的松耦合,让子系统内部的模块能更容易扩展和维护

           2.对客户实现了封装

           3.提供了统一的接口

缺点:1.增加新的子系统可能需要修改外观类或客户端的源代码。

           2.代码过于臃肿

类图:

 

代码:

方法接口

public interface Login{

     public void login();
}
public interface SelectData{

     public void getData();
}
public interface Check{

     public void check();
}

方法的实现

public class LoginImpl implements Login {

     public void login(){
          system.out.print("登录输入")
     };
}
public class SelectDataImpl implements SelectData{

     public void getData(){
          system.out.print("根据登录获取数据")
     };
}
public class CheckImpl implements Check{

     public void check(){
          system.out.print("检查验证")
     };
}

外观角色(提供统一的接口)

public class LoginForPerson {
    private LoginImpl loginImpl;
    private SelectDataImpl selectDataImpl;
    private CheckImpl checkImpl;

    public ShapeMaker() {
        loginImpl= new LoginImpl();
        selectDataImpl= new SelectDataImpl();
        checkImpl= new CheckImpl();
    }
    
    //提供验证功能
    public void allLogin() {
        loginImpl.login();
        selectDataImpl.getData();
        checkImpl.check();
    }
    
    //只登录不验证
    public void onlyLogin() {
        loginImpl.login();
    }
   
}

调用

public class FacadeDemo {
    public static void main(String[] args) {
        LoginForPerson object = new LoginForPerson();
        object.onlyLogin();
        ///或者挨个调用
        new LoginImpl().login();
        new SelectDataImpl().getData();
        new CheckImpl().check();

    }
}

 

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/102587032

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。