结构型设计模式

结构型模式: 将类或对象结合在一起形成更大的结构的低耦合解决方案。

类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中 一般只存在继承关系和实现关系 。

对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实 例对象,然后通过该对象调用其方法。

 

适配器模式

将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以一起工作。

理解: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连接池,线程池,是池化技术的重要实现方式。

posted @   LimeCoder  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示