设计模式之外观模式

外观模式

本质: 封装交互,简化调用

何时使用外观模式

相关模式

外观模式经典代码:

复制代码
package com.tao.design.facade;

/**
 * @projectName: DesignMode
 * @package: com.tao.design.facade
 * @className: ServiceA
 * @author: TT_Hugo
 * @description: TODO
 * @date: 2022/12/26 22:05
 * @version: 1.0
 */
public interface ServiceA {
    void methodA();
}

package com.tao.design.facade;

/**
 * @projectName: DesignMode
 * @package: com.tao.design.facade
 * @className: ServiceAImpl
 * @author: TT_Hugo
 * @description: TODO
 * @date: 2022/12/26 22:06
 * @version: 1.0
 */
public class ServiceAImpl implements ServiceA{
    @Override
    public void methodA() {
        System.out.println("这是服务A");
    }
}

package com.tao.design.facade;

/**
 * @projectName: DesignMode
 * @package: com.tao.design.facade
 * @className: ServiceB
 * @author: TT_Hugo
 * @description: TODO
 * @date: 2022/12/26 22:05
 * @version: 1.0
 */
public interface ServiceB {
    void methodB();
}

package com.tao.design.facade;

/**
 * @projectName: DesignMode
 * @package: com.tao.design.facade
 * @className: ServiceBImpl
 * @author: TT_Hugo
 * @description: TODO
 * @date: 2022/12/26 22:06
 * @version: 1.0
 */
public class ServiceBImpl implements ServiceB{
    @Override
    public void methodB() {
        System.out.println("这是服务B");
    }
}

package com.tao.design.facade;

/**
 * @projectName: DesignMode
 * @package: com.tao.design.facade
 * @className: ServiceC
 * @author: TT_Hugo
 * @description: TODO
 * @date: 2022/12/26 22:05
 * @version: 1.0
 */
public interface ServiceC {
    void methodC();
}

package com.tao.design.facade;

/**
 * @projectName: DesignMode
 * @package: com.tao.design.facade
 * @className: ServiceCImpl
 * @author: TT_Hugo
 * @description: TODO
 * @date: 2022/12/26 22:06
 * @version: 1.0
 */
public class ServiceCImpl implements ServiceC{
    @Override
    public void methodC() {
        System.out.println("这是服务C");
    }
}

门面类:将交互封装起来,简化使用者的调用

复制代码
package com.tao.design.facade;

/**
 * @projectName: DesignMode
 * @package: com.tao.design.facade
 * @className: Facade
 * @author: TT_Hugo
 * @description: TODO
 * @date: 2022/12/26 22:08
 * @version: 1.0
 */
public class Facade {
    ServiceA sa;
    ServiceB sb;
    ServiceC sc;

    public Facade() {
        sa = new ServiceAImpl();
        sb = new ServiceBImpl();
        sc = new ServiceCImpl();
    }

    public void methodA() {
        sa.methodA();
        sb.methodB();
    }

    public void methodB() {
        sb.methodB();
        sc.methodC();
    }

    public void methodC() {
        sc.methodC();
        sa.methodA();
    }
}

测试类

复制代码
package com.tao.design.facade;

/**
 * @Author Mi_Tao
 * @Date 2023/7/23
 * @Description
 * @Version 1.0
 **/
public class Client {
    public static void main(String[] args) {
        new Facade().methodA();
    }
}
相关推荐
Mr_WangAndy7 分钟前
C++设计模式_行为型模式_责任链模式Chain of Responsibility
c++·设计模式·责任链模式·行为型模式
星空寻流年15 分钟前
设计模式第七章(责任链模式)
设计模式·责任链模式
Deschen31 分钟前
设计模式-原型模式
java·设计模式·原型模式
麦麦鸡腿堡35 分钟前
Java的动态绑定机制(重要)
java·开发语言·算法
それども37 分钟前
SpringBootTest运行线程池被拒绝
java
☆cwlulu44 分钟前
c++最常用的几种设计模式
设计模式
介一安全1 小时前
【Frida Android】基础篇6:Java层Hook基础——创建类实例、方法重载、搜索运行时实例
android·java·网络安全·逆向·安全性测试·frida
xyy20251 小时前
Spring事务的传播方式
java·数据库·spring
@Kerry~1 小时前
phpstudy .htaccess 文件内容
java·开发语言·前端
roshy1 小时前
x86、arm、rsc-v指令集架构,指令集、OS、应用3者的关系
java·arm开发·架构