结构型设计模式
结构型模式: 将类或对象结合在一起形成更大的结构的低耦合解决方案。
类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中 一般只存在继承关系和实现关系 。
对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实 例对象,然后通过该对象调用其方法。
适配器模式
将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以一起工作。
理解:A类想要实现接口,但又想借用实现了统一接口的B类的功能,那么就可以采用继承/组合B类对象的方式,这就是类/对象适配器模式。
桥梁模式
桥接模式将抽象部分与实现部分分离,使它可以独立的变化。
理解:一个接口颜色,颜色可以有无数的子类。一个抽象类车,车里存了一个颜色接口,这样就能有各种颜色的车;或者说,一个设备驱动,里面存一个操作系统API接口,这个接口可以套用各种操作系统API实现,那么这个驱动就实现了多系统兼容。
装饰模式
装饰模式以对客户透明的方式动态地给一个对象附加上更多的职责/功能。
public abstract class Component { protected Component component; public Component(){} public Component(Component component){ this.component = component; } } public class ConcreteComponent extends Component{ public ConcreteComponent(){ super(); } public ConcreteComponent(Component component){ this.component = component; } } public abstract class Decorator extends Component{ public Decorator(){ super(); } public Decorator(Component component){ super(component); } } //A装饰类 public class ADecorator extends Decorator{ public ADecorator(){ super(); } public ADecorator(Component component){ super(component); } } //B装饰类 public class BDecorator extends Decorator{ public BDecorator(){ super(); } public BDecorator(Component component){ this.component = component; } } //测试类 public class Application { public static void main(String[] args) { Component component = new ConcreteComponent(new ADecorator(new BDecorator())); } }
外观/门面模式
为复杂子系统提供一个简单接口,定义一个高层接口,使子系统更加容易使用。解除客户程序与抽象类具体实现部分的依赖性,提高子系统的独立性和可移植性。设计思想,迪米特法则。
实例:
组合/部分-整体模式
组合对象既可以包括单一对象,也可以包括组合对象。实际上,就是一个类组合了一个装饰对象,本质上就是装饰模式。
代理模式
为其他对象提供一种代理以控制对这个对象的访问,通俗来说就是增强对象方法的功能。
实例:
SpringAOP的JDK动态代理、CGLib动态代理,前者是利用反射实现对接口级别的动态代理,后者是利用修改字节码实现对接口/基类的动态代理。
享元模式
大量的对象实例拥有多个相同的域,那么就把这些域对应的类组合在一个类中,这样原对象实例就可以共享几份内存而实现多个对象。
实例:SQLSession连接池,线程池,是池化技术的重要实现方式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现