外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统
1.工厂模式:提供创建对象的接口2.单例模式:生成只存在一个的实例3.桥接模式:将类的功能层次和实现层次分离,动态结合4.享元模式:避免大量相同开销5.原型模式:通过复制生成实例6.建造者模式:组装复杂实例7.职责链模式:推卸责任8.模板模式:具体的步骤延迟到子类中实现9.迭代器模式:一个个遍历
10.外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统
11.代理模式:为其他对象提供一种代理以控制对这个对象的访问12.适配器模式:将两个不兼容的类纠合在一起13.组合模式:处理树形结构数据14.装饰器模式:动态给一个对象添加一些额外的职责15.命令模式:命令也是类16.访问者模式:访问数据结构并处理数据17.观察者模式:发送状态变化通知18.状态模式:用类表示状态19.策略模式:整体替换算法20.解释器模式:语法规则也是类21.中介者模式:只有一个仲裁者22.备忘录模式:保存对象状态外观模式是一种结构型设计模式,它为复杂子系统提供了一个统一的接口,从而使其更易于使用。外观模式隐藏了子系统的复杂性,并将其封装在一个高级接口中。在使用外观模式时,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个组件交互。
// 子系统中的组件 class CPU { public void processData() { System.out.println("CPU: processing data..."); } } class Memory { public void load() { System.out.println("Memory: loading data..."); } } class HardDrive { public void readData() { System.out.println("Hard drive: reading data..."); } } // 外观类 class ComputerFacade { private CPU cpu; private Memory memory; private HardDrive hardDrive; public ComputerFacade() { this.cpu = new CPU(); this.memory = new Memory(); this.hardDrive = new HardDrive(); } public void startComputer() { System.out.println("Starting computer..."); cpu.processData(); memory.load(); hardDrive.readData(); System.out.println("Computer started."); } } // 客户端代码 public class Client { public static void main(String[] args) { ComputerFacade computer = new ComputerFacade(); computer.startComputer(); } }
在上面的代码中,CPU
、Memory
和HardDrive
分别代表子系统中的组件,而ComputerFacade
是外观类。
在ComputerFacade
中,我们将三个子系统组件实例化并暴露一个公共方法startComputer()。客户端只需要调用该方法即可启动计算机,而不需要了解计算机内部的复杂性。
通过使用外观模式,客户端代码变得更加简单,而且如果需要修改或者更新子系统的实现,客户端代码不受影响。
合集:
Java设计模式
分类:
Java设计模式 / 结构型模式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性