Java外观设计模式
定义
外观模式(Facade Pattern)是一种结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。这种模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。您想了解更多关于外观模式的信息吗?
对应角色
外观模式包含两个角色:Facade(外观角色)和SubSystem(子系统角色)。外观角色是客户端可以调用的类,它可以指定相关(一个或者多个)子系统的功能和职责。在正常情况下,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理
优缺点
优点
文章来源:https://www.toymoban.com/news/detail-569662.html
- 简化客户端代码:简化复杂系统的调用过程,无需对子系统进行深入了解,即可完成调用¹。
- 降低耦合:使用外观模式,只与外观对象进行交互,不与复杂的子系统直接进行交互,降低了系统间的依赖,使耦合关系更低。子系统内部的模块更容易扩展和维护¹。
缺点
文章来源地址https://www.toymoban.com/news/detail-569662.html
- 子系统扩展风险:系统内部扩展子系统时,容易产生风险¹。
- 不符合开闭原则:外观模式扩展子系统时,不符合开闭原则¹。
应用场景
- 为复杂的模块或子系统提供外界访问的模块³。
- 子系统相互独立³。
- 系统结构层次复杂,每个层级都可以使用外观对象作为该层入口,可以简化层次间的调用接口²。
实例
interface Shape {
void draw();
}
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle::draw()");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("Square::draw()");
}
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle::draw()");
}
}
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();
}
}
public class FacadePatternDemo {
public static void main(String[] args) {
ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawCircle();
shapeMaker.drawRectangle();
shapeMaker.drawSquare();
}
}
到了这里,关于Java外观设计模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!