Java设计模式 _结构型模式_外观模式

一、外观模式

1、外观模式

外观模式(Facade Pattern)是一种结构型模式。主要特点为隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这有助于降低系统的复杂性,提高可维护性。当客户端与多个子系统之间存在大量的交互时,有助于减少客户端与子系统之间的耦合,提高系统的可扩展性。同时保护了子系统的内部实现,提高系统的安全性。

2、实现思路

(1)、创建一个统一接口,并完成各种实现类的编写;

(2)、编写外观类,将各种实现类都内置为外观类的成员变量;

(3)、在外观类中,通过构造方法或者自定义方法,去创建成员变量的实例。

(4)、定义外观需要的各种方法,可以是调用某一个实现类的方法,或者是组合多个实现类的方法。

二、代码示例

1、代码示例

通过形状的超市去获取各种形状,而不是通过每一个形状的实例去获取。

java 复制代码
// 1、定义形状的抽象接口
public interface Shape {
    public void draw();
}
// 2.1、定义绘制圆形的方法
public class CircleShape implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}
// 2.2、定义绘制正方形的方法
public class SquareShape implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制正方形");
    }
}
// 2.3、定义绘制三角形的方法
public class TriangleShape implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制三角形");
    }
}
// 3、定义外观类,形状市场
public class ShapeMarket {
    private Shape circleShape;
    private Shape squareShape;
    private Shape triangleShape;

    public ShapeMarket(){
        this.circleShape = new CircleShape();
        this.squareShape = new SquareShape();
        this.triangleShape = new TriangleShape();
    }

    // 绘制圆形外观方法
    public void drawCircle(){
        this.circleShape.draw();
    }

    // 绘制正方形外观方法
    public void drawSquare(){
        this.squareShape.draw();
    }

    // 绘制三角形外观方法
    public void drawTriangle(){
        this.triangleShape.draw();
    }

    // 通过组合--生成绘制多个图形的外观方法
    public void drawAll(){
        this.circleShape.draw();
        this.squareShape.draw();
        this.triangleShape.draw();
    }
}
// 4、测试类,通过市场来绘制图形
public static void main(String[] args) {
        ShapeMarket market = new ShapeMarket();

        System.out.println("**********");
        market.drawCircle();  // 用外观类画圆
        System.out.println("");

        System.out.println("**********");
        market.drawSquare();  // 用外观类画正方形
        System.out.println("");

        System.out.println("**********");
        market.drawTriangle();  // 用外观类画三角形
        System.out.println("");

        System.out.println("**********");
        market.drawAll();  // 用外观类绘制多个图形
    }

运行结果:

总结:

外观模式的套路,就是将多个相关业务的类都放在一个类中,作为属性成员去管理。之后根据业务需要定义的各种对外的方法,而在这些方法中真正起作用还是通过直接或者组合调用成员方法去实现的。

学海无涯苦作舟!!!

相关推荐
晚安code8 小时前
设计模式入门:吃透 SOLID 原则与迪米特法则,再学 5 个高频模式
后端·设计模式
染指111012 小时前
135.Agent-多Agent框架-LangChain多智能体(SubAgents子代理)
数据库·人工智能·设计模式·langchain·agent·agents
路弥行至1 天前
【Head First 设计模式】第 2 章:观察者模式 —— 用现代 C++ 重新解读“交互对象的松耦合
c++·经验分享·笔记·观察者模式·设计模式·入门教程·headfirst
YYYing.1 天前
【设计模式系列 (九) 】装饰器模式
c++·后端·设计模式·装饰器模式·c/c++
沫璃染墨2 天前
《从零入门Linux系统篇(五十六):线程篇·九——生产者消费者模型:从条件变量到BlockingQueue实现》
linux·服务器·c++·驱动开发·设计模式·架构·系统架构
c萱3 天前
AI产品经理——01基础认知篇
设计模式·prompt·aigc·产品经理·ai编程·gitcode·ai-native
YYYing.3 天前
【设计模式系列 (八) 】组合模式
c++·后端·设计模式·组合模式·c/c++
geovindu3 天前
rust: Composite Pattern
开发语言·后端·设计模式·rust·组合模式
YYYing.3 天前
【设计模式系列 (七) 】桥接模式
c++·后端·设计模式·桥接模式
阿狗童鞋4 天前
设计模式实战指南
设计模式