zoukankan      html  css  js  c++  java
  • 外观设计模式

    什么是外观模式

    外观模式(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();
        }
        
    }

    运行结果:

  • 相关阅读:
    offsetLeft,Left,clientLeft的区别
    IIS 内部运行机制
    常用正则表达式
    千万不要把 bool 设计成函数参数
    ASP.NET第一课,IIS安装与配置
    将字符串转为变量名(C#)
    淘宝技术发展
    C# 反射机制
    技术普及帖:你刚才在淘宝上买了一件东西
    高性能分布式计算与存储系统设计概要——暨2012年工作3年半总结
  • 原文地址:https://www.cnblogs.com/toov5/p/9869873.html
Copyright © 2011-2022 走看看