Java门面模式(或外观模式)
来源:互联网 发布:淘宝曲度腰椎治疗仪 编辑:程序博客网 时间:2024/04/30 07:54
门面模式(或外观模式)隐藏系统的复杂性,并为客户端提供一个客户端可以访问系统的接口。 这种类型的设计模式属于结构模式,因为此模式为现有系统添加了一个接口以隐藏其复杂性。
门面模式涉及一个类,它提供客户端所需的简化方法和委托调用现有系统类的方法。
实现实例
在这个实例中将创建一个Shape
接口并实现Shape
接口的具体类。在下一步中,将定义一个Facade
类ShapeMaker
,请在下一步中参考其代码。
ShapeMaker
类使用具体类来将用户调用委派给这些类。 FacadePatternDemo
这是一个演示类,它使用ShapeMaker
类来显示结果。
门面模式(或外观模式)的实现实例结构如下图中所示 -
第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()
阅读全文
0 0
- Java门面模式(或外观模式)
- Java门面模式(或外观模式)
- 外观模式或门面模式
- JAVA设计模式十八:--Facade(外观模式或门面模式)
- facade pattern--门面模式或外观模式
- 外观模式/门面模式
- 门面模式/外观模式
- 门面模式/外观模式
- 外观模式/门面模式
- 外观模式/门面模式
- Java Facade (外观模式、门面模式)
- php,java实现门面(外观)模式
- 外观模式(Facade Pattern)或门面模式
- 外观模式(门面模式)
- php 门面模式(外观模式)
- 门面模式(外观Facade模式)
- 外观模式(门面模式)
- 外观模式(门面模式)--Facade
- 防止训练深度网络中出现过拟合现象
- 欢迎使用CSDN-markdown编辑器
- 函数dup and dup2
- CodeForces
- 学习笔记之面向对象编程24(多线程机制3)
- Java门面模式(或外观模式)
- 在线工具网站合集(持续更新)
- python_lintcode_82落单的数_83落单的数 II_84落单的数 III
- C#调用动态库,无法加载 DLL"xx.dll": 找不到指定的模块
- 数据结构 p25-26 算法实现 线性表的查找与归并排序2
- springBoot @Scheduled注解 cron表达式详解
- SAN LUN Mapping出错导致文件系统共享冲突的恢复案例
- linux下编写tcp服务器学习笔记
- Largest Rectangle in Histogram :直方图中的最大三角形