首页 > 编程语言 >java 实现外观模式

java 实现外观模式

时间:2023-10-01 11:36:41浏览次数:38  
标签:外观 java void System 模式 子系统 println public out


外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简化的接口,用于访问一组相关的接口或子系统。外观模式的主要目的是隐藏复杂的系统结构,提供一个更简单的接口供客户端使用。以下是一个简单的Java示例,演示如何实现外观模式:

首先,假设我们有一个音响系统,它包含了多个子系统,如音响、DVD播放器和投影仪。每个子系统都有自己的方法和状态。

// 子系统1:音响
public class StereoSystem {
    public void turnOn() {
        System.out.println("Stereo System is ON");
    }

    public void turnOff() {
        System.out.println("Stereo System is OFF");
    }
}

// 子系统2:DVD播放器
public class DVDPlayer {
    public void play() {
        System.out.println("DVD Player is playing");
    }

    public void stop() {
        System.out.println("DVD Player is stopped");
    }
}

// 子系统3:投影仪
public class Projector {
    public void turnOn() {
        System.out.println("Projector is ON");
    }

    public void turnOff() {
        System.out.println("Projector is OFF");
    }
}

接下来,我们创建一个外观类 HomeTheaterFacade,它提供了一个简单的接口,封装了所有子系统的操作:

public class HomeTheaterFacade {
    private StereoSystem stereoSystem;
    private DVDPlayer dvdPlayer;
    private Projector projector;

    public HomeTheaterFacade() {
        this.stereoSystem = new StereoSystem();
        this.dvdPlayer = new DVDPlayer();
        this.projector = new Projector();
    }

    public void watchMovie() {
        System.out.println("Get ready to watch a movie...");
        stereoSystem.turnOn();
        dvdPlayer.play();
        projector.turnOn();
    }

    public void endMovie() {
        System.out.println("Movie is over. Shutting down...");
        projector.turnOff();
        dvdPlayer.stop();
        stereoSystem.turnOff();
    }
}

现在,客户端可以通过使用 HomeTheaterFacade 来操作整个家庭影院系统,而无需了解每个子系统的细节:

public class FacadePatternDemo {
    public static void main(String[] args) {
        HomeTheaterFacade homeTheater = new HomeTheaterFacade();

        // 开始观影
        homeTheater.watchMovie();

        // 结束观影
        homeTheater.endMovie();
    }
}

使用外观模式,客户端代码变得更简单,因为它不必了解复杂的子系统结构和操作。外观模式提供了一个更高级别的接口,使得系统更易于使用和维护。


标签:外观,java,void,System,模式,子系统,println,public,out
From: https://blog.51cto.com/u_13171517/7672429

相关文章

  • java 实现模板方法模式
    模板方法模式(TemplateMethodPattern)是一种行为型设计模式,它定义了一个算法的骨架,将具体的步骤延迟到子类中实现。模板方法模式使得子类可以重新定义算法的某些步骤,而不改变算法的结构。以下是一个简单的Java示例,演示如何实现模板方法模式:首先,定义一个抽象类Game,它包含一个模板方......
  • java面试题汇总
    Arrays.sort实现原理Arrays.sort()是Java中用于对数组进行排序的方法,它基于经过优化的归并排序(MergeSort)和插入排序(InsertionSort)的混合排序算法。Java使用了不同的排序算法,具体的选择取决于排序的对象类型和数组大小。以下是Arrays.sort()方法的一般工作原理:判断数组大小:如......
  • Java Arrays.fill() 方法详解
    在Java编程中,数组是一个非常常见的数据结构,而Java提供了许多有用的数组操作方法来简化开发过程。其中之一是Arrays.fill()方法,它允许我们填充一个数组的所有元素,将它们设置为指定的值。在本篇文章中,我们将深入探讨Arrays.fill()方法的用法、参数和示例,以帮助您更好地理解和使用它。......
  • 访问者模式
    访问者模式案例引入要求1.将观众分为男生和女生,对歌手进行评价,当看完某个歌手表演后,对于歌手有不同的评价(评价的类别,有成功,失败等)。传统方式实现思路创建一个Person类,其有两个子类,分别是Man和WoMan,使用ifelse分支,去判断一个歌手的评价,成功对应成功分支,失败对应失败分支。......
  • java中观察者模式的简单实现
    4要素:1观察者接口2具体的观察者3管理者接口4管理者实现类5调用1观察者接口包含观察者行为方法publicinterfaceObserver{/***当目标类发生变化时所执行的操作**/StringdoSomething();}2具体的观察者//具体观察者A@Slf4j@Component("ObserverA")pu......
  • 无涯教程-JavaScript - UNICHAR函数
    描述UNICHAR函数返回给定数字值引用的Unicode字符。语法UNICHAR(number)争论Argument描述Required/OptionalNumberNumberistheUnicodenumberthatrepresentsthecharacter.RequiredNotes返回的Unicode字符可以是字符串,如UTF-8或UTF-16代码。如果Unicod......
  • 无涯教程-JavaScript - T函数
    描述T函数返回值所引用的文本。语法T(value)争论Argument描述Required/OptionalValueThevalueyouwanttotest.RequiredNotes如果value是或引用文本,则T返回值。如果值不引用文本,则T返回""(空文本)。通常不需要在公式中使用T函数,因为MicrosoftExcel会根......
  • java实现策略模式
    策略模式(StrategyPattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装成单独的类,并使它们可以相互替换,以使算法的变化独立于客户端使用算法的方式。策略模式允许客户端选择不同的算法,以满足不同的需求。以下是一个简单的Java示例,演示如何实现策略模式:首先,定义一个策略接......
  • java实现观察者模式
    观察者模式(ObserverPattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生变化时,它的所有依赖者(观察者)都会收到通知并自动更新。观察者模式通常包括以下角色:主题(Subject)、观察者(Observer)、具体主题(ConcreteSubject)和具体观察者(ConcreteObserver)。以下是一......
  • java实现迭代器模式
    迭代器模式(IteratorPattern)是一种行为型设计模式,它提供一种方法来顺序访问一个聚合对象(如列表、集合、数组等)中的元素,而不暴露聚合对象的内部表示。迭代器模式通常包括以下角色:迭代器(Iterator)、具体迭代器(ConcreteIterator)、聚合(Aggregate)、具体聚合(ConcreteAggregate)。以下是一......