设计模式详解-外观模式

这篇具有很好参考价值的文章主要介绍了设计模式详解-外观模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

类型:结构型模式

实现原理:定义了一个高层接口,向现有的系统中的一组接口提供一致的界面

目的:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口,使系统更加容易使用

何时使用:简化复杂系统,方便操作

解决方法:对客户端和系统解耦,让外观类与系统耦合

关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。

应用实例:电脑操作系统

优点: 1、解耦 2、灵活 3、安全

缺点:不符合开闭原则,改东西麻烦,继承重写困难。

使用场景:为复杂的模块或子系统提供外界访问的模块文章来源地址https://www.toymoban.com/news/detail-658951.html

实现

步骤 1
        创建一个接口。

        Shape.java
public interface Shape {
    void draw();
}
步骤 2
        创建实现接口的实体类。

        Rectangle.java
public class Rectangle implements Shape {

    @Override
    public void draw() {
        System.out.println("Rectangle::draw()");
    }
}
Square.java
public class Square implements Shape {

    @Override
    public void draw() {
        System.out.println("Square::draw()");
    }
}
Circle.java
public class Circle implements Shape {

    @Override
    public void draw() {
        System.out.println("Circle::draw()");
    }
}
步骤 3
        创建一个外观类。

        ShapeMaker.java
public class ShapeMaker {
    private Shape circle;
    private Shape rectangle;
    private Shape square;

    public ShapeMaker() {
        circle = new Circle();
        rectangle = new Rectangle();
        square = new Square();
    }

    public void drawCircle(){
        circle.draw();
    }
    public void drawRectangle(){
        rectangle.draw();
    }
    public void drawSquare(){
        square.draw();
    }
}
步骤 4
        使用该外观类画出各种类型的形状。

        FacadePatternDemo.java
public class FacadePatternDemo {
    public static void main(String[] args) {
        ShapeMaker shapeMaker = new ShapeMaker();

        shapeMaker.drawCircle();
        shapeMaker.drawRectangle();
        shapeMaker.drawSquare();
    }
}
步骤 5
        执行程序,输出结果:

        Circle::draw()
        Rectangle::draw()
        Square::draw()
        
这段代码展示了外观模式的实现步骤:

创建一个接口 Shape,其中定义了一个抽象方法 draw(),表示绘制形状的操作。
创建三个实现类 RectangleSquareCircle,它们分别实现了 Shape 接口,并实现了 draw() 方法,用于具体绘制各种形状。
创建一个外观类 ShapeMaker,该类包含了对上述三个形状的引用,通过实例化相应的对象来创建这些形状。外观类提供了三个公共方法 drawCircle()drawRectangle()drawSquare(),分别调用对应形状的 draw() 方法。
创建一个 FacadePatternDemo 类作为主类,通过实例化 ShapeMaker 对象,并调用其方法来使用外观类画出各种类型的形状。
最后执行程序,输出结果依次为 "Circle::draw()""Rectangle::draw()""Square::draw()",表示成功绘制了圆形、矩形和正方形。
这个例子中,外观模式被用于隐藏创建形状对象和调用绘制方法的复杂性。客户端只需要通过外观类提供的简单接口调用方法,而无需了解底层的具体实现。这样可以简化客户端的使用,并且在后续需要修改具体形状的实现时,只需要修改外观类而不影响到客户端代码。```

到了这里,关于设计模式详解-外观模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Java极简设计模式》第08章:外观模式(Facade)

    作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 源码地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/java-simple-design-facade 沉淀,成长,突破,帮助他人,成就自我。 本章难度:★★☆☆☆ 本章重点:用最

    2024年02月07日
    浏览(33)
  • 【Java面试题】设计模式之七种结构性模式——代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式

    目录 一、代理模式 二、适配器模式 三、桥接模式 四、装饰模式 五、外观模式 六、享元模式 七、组合模式 概念: 代理模式是为其他对象提供一种以代理控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对

    2023年04月09日
    浏览(41)
  • 设计模式:外观模式

    外观模式是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,使得客户端能够更简单地使用子系统的功能。 外观模式的核心思想是将复杂的子系统封装在一个外观类中,客户端只需要与外观类进行交互,而不需

    2024年02月07日
    浏览(36)
  • 设计模式-外观模式

         外观模式(Facade Pattern)是属于结构型的设计模式,它的主要目的是为子系统中的一组接口提供一个统一且更简单的接口,还简化了客户端调用子系统功能的过程。 1 Facade(外观类) : Facade 类提供了对子系统的简洁、一致的接口。它包含了子系统中的多个模块或组件的

    2024年01月19日
    浏览(61)
  • 设计模式之~外观模式

    定义:         为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 结构图: 区分中介模式: 门面模式对外提供一个接口 中介模式对内提供一个接口 优点: 松耦合:用户与子系统解耦,屏蔽子系统;可以

    2024年02月07日
    浏览(27)
  • 设计模式系列-外观模式

    一、上篇回顾 上篇我们主要讲述了创建型模式中的最后一个模式-原型模式,我们主要讲述了原型模式的几类实现方案,和原型模式的应用的场景和特点,原型模式 适合在哪些场景下使用呢?我们先来回顾一下我们上篇讲述的3个常用的场景。 1、我们在运行态的时候,动态的

    2024年02月09日
    浏览(27)
  • 设计模式(8)外观模式

    一、 1、使用背景:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。 2、定义: 为子系统中的一组接口定义一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。完美地体现了依赖倒转原则和迪米特法则的思想。 3、结构

    2024年02月11日
    浏览(25)
  • 设计模式之外观模式

    组建一个家庭影院: DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器: 统筹各设备开关 开爆米花机 放下屏幕 开投影仪 开音响 开 DVD,选 dvd 去拿爆米花 调暗灯光 播放 观影结束后,关闭各种设备 在 ClientTest

    2024年02月09日
    浏览(31)
  • 设计模式之外观模式笔记

    记录下学习设计模式-外观模式的写法。JDK使用版本为1.8版本。 意图 :为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 结构 : 其中: Facade知道哪些子系统类负责处理请求;将客户的请求代理给适合的子系统

    2024年02月11日
    浏览(30)
  • js设计模式:外观模式

    将复杂的功能封装成可以简单调用的方法,无需知道内部的具体逻辑,只需要知道怎么去使用 类似于一把枪,你可以不知道内部的枪机,击发机,复进簧,枪管,导气装置,弹夹是怎么合作配合完成发射和自动填弹,你只需要知道你扣动扳机就能完成这一系列复杂的操作,而那个扳机就是

    2024年02月22日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包