设计模式-外观模式
外观模式
外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。
主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口
所属类型:结构型模式
如何解决:客户端不与系统耦合,外观类与系统耦合
关键代码:在客户端和系统之间再加一层,这一层对处理顺序,依赖关系等处理好
优点:1、减少系统相互依赖;2、提高灵活性;3、提高了安全性
缺点:不符合开闭原则,如果要改东西就会十分麻烦,继承重写都不合适。
接下来进行一个例子的创建。主要工作是进行图形的绘制工作。
首先创建一个Shape
接口,让所有的形状都来实现其方法。
public interface Shape {
void draw();
}
分别创建Circle
,Square
和Rectangle
类并且实现对应的draw()
方法。
public class Circle implements Shape{
@Override
public void draw() {
System.out.println("Draw a circle.");
}
}
public class Square implements Shape{
@Override
public void draw() {
System.out.println("Draw a square.");
}
}
public class Rectangle implements Shape{
@Override
public void draw() {
System.out.println("Draw a rectangle.");
}
}
创建一个ShapeMaker
类来对具体的绘制工作进行管理,相当于在画具体的图形
和进行画图操作
之间加了一层用于处理对应的事情,其中还可以添加其他复杂的操作。
public class ShapeMaker {
private Circle circle;
private Rectangle rectangle;
private Square 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();
}
}
通过ShapeMaker
来进行相应的操作。
public class FacadeDemo {
public static void main(String[] args) {
ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawRectangle();
shapeMaker.drawCircle();
shapeMaker.drawSquare();
}
}
运行结果如下所示:
Draw a rectangle.
Draw a circle.
Draw a square.
Tips
简单进行一次总结,外观模式将客户从一个复杂的系统中进行解耦
,其实现的主要方法还是在客户端和系统之间添加一步操作,来根据对应的功能进行不同的处理。外观模式也实现了让外观更加简单的效果
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!