论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
外貌模式
外貌模式
道家人
论坛元老
|
2024-8-16 11:23:06
|
显示全部楼层
|
阅读模式
楼主
主题
1027
|
帖子
1027
|
积分
3081
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
外貌模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
这种模式涉及到一个单一的类,该类提供了客户端哀求的简化方法和对现有系统类方法的委托调用。
介绍意图为一个复杂的子系统提供一个一致的高层接口。
这样,客户端代码就可以通过这个简化的接口与
子系统交互,而不需要相识子系统内部的复杂性。
主要办理的题目
低落客户端与复杂子系统之间的耦合度。
简化客户端对复杂系统的操作,隐藏内部实现细节。
使用场景
当客户端不需要相识系统内部的复杂逻辑和组件交互时。
当需要为整个系统界说一个清晰的入口点时。
实现方式
创建外貌类
:界说一个类(外貌),作为客户端与子系统之间的中介。
封装子系统操作
:外貌类将复杂的子系统操作封装成简朴的方法。
关键代码
Facade类
:提供高层接口,简化客户端与子系统的交互。
子系统类
:实现详细的业务逻辑,被Facade类调用。
应用实例
医院欢迎
:医院的欢迎职员简化了挂号、门诊、划价、取药等复杂流程。
Java三层架构
:通过外貌模式,可以简化对表现层、业务逻辑层和数据访问层的访问。
优点
减少依赖
:客户端与子系统之间的依赖减少。
进步灵活性
:子系统的内部变化不会影响客户端。
增强安全性
:隐藏了子系统的内部实现,只袒露必要的操作。
缺点
违反开闭原则
:对子系统的修改大概需要对外貌类进行相应的修改。
使用发起
在需要简化复杂系统访问时使用外貌模式。
确保外貌类提供的方法足够简朴,以便于客户端使用。
注意事项
外貌模式实用于条理化结构,可以为每一层提供一个清晰的入口。
制止过度使用外貌模式,以免隐藏过多的细节,导致维护困难。
结构
外貌模式涉及以下核心脚色:
外貌(Facade):
提供一个简化的接口,封装了系统的复杂性。外貌模式的客户端通过与外貌对象交互,而无需直接与系统的各个组件打交道。
子系统(Subsystem):
由多个相互关联的类组成,负责系统的详细功能。外貌对象通过调用这些子系统来完成客户端的哀求。
客户端(Client):
使用外貌对象来与系统交互,而不需要相识系统内部的详细实现。
https://huoyundi.com/
实现我们将创建一个
Shape
接口和实现了
Shape
接口的实体类。下一步是界说一个外貌类
ShapeMaker
。
ShapeMaker
类使用实体类来代表用户对这些类的调用。
FacadePatternDemo
类使用
ShapeMaker
类来显示结步骤 1
创建一个接口。
Shape.javapublic interface Shape {
void draw();
}
步骤 2创建实现接口的实体类。
Rectangle.javapublic class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle::draw()");
}
}
Square.javapublic class Square implements Shape {
@Override
public void draw() {
System.out.println("Square::draw()");
}
}
Circle.javapublic class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle::draw()");
}
}
步骤 3创建一个外貌类。
ShapeMaker.javapublic 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.javapublic class FacadePatternDemo {
public static void main(String[] args) {
ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawCircle();
shapeMaker.drawRectangle();
shapeMaker.drawSquare();
}
}
步骤 5实行程序,输出结果:https://huoyundi.com/
Circle::draw()
Rectangle::draw()
Square::draw()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
道家人
论坛元老
这个人很懒什么都没写!
楼主热帖
CentOS7.9使用sealos部署单节点k8s并部 ...
青龙2.10.13 稳定版+Ninja登录面板+傻 ...
软件危机与软件过程模型
日本开放Wi-Fi 6E认证
〖Python接口自动化测试实战篇⑨〗- 实 ...
LyScript 从文本中读写ShellCode
Redis和Mysql保持数据一致性
C#_串口调试助手-网络拓扑显示 ...
推荐一款完全开源,功能丰富,界面精美 ...
如何精简 Prometheus 的指标和存储占用 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
容器及微服务
Oracle
运维.售后
分布式数据库
云原生
前端开发
快速回复
返回顶部
返回列表