外观设计模式

什么是外观模式

外观模式(Facade Pattern)门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

外观模式例子

用户注册完之后,需要调用        消息接口:         阿里短信接口、邮件接口、微信推送接口,发送邮件

  把内部复杂的业务封装起来 外部调用

废话不多说,赶紧敲代码:

   先定义各个消息类型的接口:

发邮件:

package WaiGuanModel;

public interface EmailService {
   public void sendEmail();
}

微信推送:

package WaiGuanModel;

public interface WeChatService {

   public void sendWeChat();
    
}

发送短信:

package WaiGuanModel;
//发送短信
public interface MessageService {

     public void send();
    
    
}

各个接口的实现类:

package WaiGuanModel;

public class EmailServiceImpl implements EmailService{
  
    public void sendEmail() {
        System.out.println("发送邮件");
        
    }
    
}
package WaiGuanModel;

public class WeChatServiceImpl implements WeChatService{
     @Override
    public void sendWeChat() {
        System.out.println("发送微信推送");
        
    }
    
}
package WaiGuanModel;

public class MessageServiceImpl  implements MessageService{

    @Override
    public void send() {
        System.out.println("发送短信");        
    }
    
}

来个门面类去整合一下:

package WaiGuanModel;

public class Computer {
    //定义成全局的  (如果是spring 容器会去 帮忙加载的 加载好的 下面进行调用)
    EmailService emailService;
    MessageService messageService;
    WeChatService weChatService;
    
    public Computer() {
            emailService = new EmailServiceImpl();
            messageService = new MessageServiceImpl();
            weChatService = new WeChatServiceImpl();
    }
    
    
    
    public void sendMsg(){
        emailService.sendEmail();
        messageService.send();
        weChatService.sendWeChat();
    }
    

}

客户端:

package WaiGuanModel;

public class Client {

    public static void main(String[] args) {
        
        new Computer().sendMsg();
    }
    
}

运行结果:

 

posted @ 2018-10-29 11:54  toov5  阅读(175)  评论(0编辑  收藏  举报