隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口
有点像工厂模式,只需要知道用哪个方法能返回什么对象就行,不过还是有区别的,
外观模式在你调用接口的时候你需要的对象都创建好了,
例子:
比如new一个电脑
在 new 电脑的同时把 cpu、内存、硬盘都初始化好并且接好线。
对外暴露方法(启动电脑,关闭电脑)。
启动电脑(按一下电源键):启动CPU、启动内存、启动硬盘
关闭电脑(按一下电源键):关闭硬盘、关闭内存、关闭CPU
菜鸟案例:
我们将创建一个 Shape 接口和实现了 Shape 接口的实体类。下一步是定义一个外观类 ShapeMaker。
ShapeMaker 类使用实体类来代表用户对这些类的调用。FacadePatternDemo,我们的演示类使用 ShapeMaker 类来显示结果。
这个图先分开看
很正常的接口和它的三个实现类
下面这个挺重要
这个类里有三个成员属性,正好是左边Shape的三个实体类,而四个方法一个是ShapeMaker的构造方法给ShapeMaker中的成员变量赋对象,其他的都是那三个实体类的**draw()**方法1,
代码奉上
(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();
}
}
(5)使用该外观类画出各种类型的形状。
FacadePatternDemo.java
public class FacadePatternDemo {
public static void main(String[] args) {
//创建ShapeMaker 的对象时,ShapeMaker 的构造方法会给那三个属性赋对象,
ShapeMaker shapeMaker = new ShapeMaker();
//分别输出这三个对象的方法
shapeMaker.drawCircle();
shapeMaker.drawRectangle();
shapeMaker.drawSquare();
}
}
执行程序,输出结果:
Circle::draw()
Rectangle::draw()
Square::draw()
————————————————
版权声明:本文为CSDN博主「胖墩的IT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43113679/article/details/99454933