天天看点

外观设计模式

什么是外观模式

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

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

外观设计模式
package com.example.demo.appearance;

/**
 *  微信推送消息
 */
public interface WeChatMessage {
    void pushMessage();
}      
package com.example.demo.appearance;

/**
 *  微信推送接口实现类
 */
public class WeChatMessageImpl implements WeChatMessage {
    @Override
    public void pushMessage() {
        System.out.println("微信推送消息...");
    }
}      
package com.example.demo.appearance;

/**
 *  发送短信接口
 */
public interface SmsMessage {
     void sendMsg();
}      
package com.example.demo.appearance;

/**
 *  Sms 发送短信实现类
 */
public class SmsMessageImpl implements SmsMessage {
    @Override
    public void sendMsg() {
        System.out.println("Sms 发送短信...");
    }
}      
package com.example.demo.appearance;

/**
 *  邮件消息接口
 */
public interface EmailMessage {
    void sendMessage();
}      
package com.example.demo.appearance;

/**
 *  email 接口实现类
 */
public class EmailMessageImpl implements EmailMessage {
    @Override
    public void sendMessage() {
        System.out.println("邮件发送消息...");
    }
}      
package com.example.demo.appearance;

/**
 *  门面 将多个方法封装在一起
 */
public class Computer {

    EmailMessage emailMessage;
    SmsMessage smsMessage;
    WeChatMessage weChatMessage;

    public Computer(){
        emailMessage=new EmailMessageImpl();
        smsMessage=new SmsMessageImpl();
        weChatMessage=new WeChatMessageImpl();
    }

    public void sendMsg(){
        emailMessage.sendMessage();
        smsMessage.sendMsg();
        weChatMessage.pushMessage();
    }

}      
package com.example.demo.appearance;

/**
 *  测试
 */
public class Test {
    public static void main(String[] args) {
        Computer computer=new Computer();
        computer.sendMsg();
    }
}