
设计模式
文章平均质量分 57
Java编程小辉
两年半Java开发经验,24届毕业生
GitHub:https://github.com/qiuquanhui 正在求职找工作中
展开
-
适配器模式
比如充电,插座的电压为 220V(被适配者),手机(客户端)通过充电器(适配器)将插座的电压降到 5 V(目标接口)传输电压给手机(客户端)。定义一个多个方法的接口,使用抽象父类来实现该接口并实现接口中的所有方法,子类要使用的话使用覆盖其中的一个方法就可以了。因为类适配器需要适配器去继承被适配者,不符合合成复用原则,使用对象适配器可以解决这一问题,将被适配者聚合到适配器中。因为只在上述的类加载器的基础上修改了适配器,所以只贴出适配器的与客户端的代码,其余与类加载器一致。原创 2024-07-20 14:26:01 · 606 阅读 · 0 评论 -
设计模式的七项原则
类实现接口上,遵循最少接口原则,比如接口A要五个方法,实现类A是需要用来其中的三个方法,实现类B只需要用到其中的两个方法,那么就可以把接口A拆分为接口A(只包含类A的三种方法)+接口B(只包含类B的两种方法)。一个类负责一个职责,不可以让一个类负责多项职责,这样会导致类的难管理,但是也不要把一个类切分的太细。当我们需要新增功能时,尽量的只去增加代码,而不是修改代码,提高代码的可用性,可靠性,安全性。细节依赖于抽象,底层依赖与高层,高层依赖于抽象,以抽象为高层,更好的进行类之间的管理。原创 2024-07-12 11:44:48 · 347 阅读 · 0 评论 -
代理模式(静态代理,动态代理,cglib代理)
代理模式属于结构型的模式,通过代理对象来访问目标对象,即可以扩展目标对象的功能,比如日志记录,或者是安全检查,我们常用的AOP面向切面编程是属于一种代理模式。使用的代理工厂实现methodIntecetor,重写 intecetor方法就可以了。代理模式的形式:静态代理,动态代理(JDK 代理),cglib代理(基于内存实现)代理对象与目标对象都要实现同一个接口或者父类,客户端通过代理对象来访问目标对象。又称为 JDK 代理,通过JDK 反射的包来实现。cglib代理是可以不急于抽象父类或者抽象接口。原创 2024-07-12 11:44:14 · 660 阅读 · 1 评论 -
建造者模式
*** 产品**/@Data/*** 抽象建造者**//*** 具体建造者:普通房子**/@OverrideSystem.out.println(" 普通房子打地基 5 米 ");@OverrideSystem.out.println(" 普通房子砌墙 10cm ");@OverrideSystem.out.println(" 普通房子封顶 ");/*** 具体建造者:高楼**/@Override。原创 2024-07-07 13:28:28 · 932 阅读 · 0 评论 -
单例模式之静态内部类与枚举类
推荐使用创建单例模式有:双重检查锁,静态内部类,枚举类。如果确保对象一定会被使用,那么使用饿汉式的创建方式也可以。原创 2024-07-07 12:07:59 · 542 阅读 · 0 评论 -
单例模式之懒汉式
是的,但是也出现了线程不安全的问题,比如有多个线程进入 if (singleton == null) 那么是不是会有多个线程进行创建对象。虽然解决了线程安全问题,但是性能太差了,每一次调用实例都需要进入同步方法,其实我们创建实例的时候保持同步就可以了。我们只需要在加锁的代码块中再进行一次空判断,就可以很好的解决并发问题了,当一个线程进入的时候,先判断是否为空,为空才创建对象,不为空直接返回。懒汉式是符合懒加载的模式,但是会存在线程并发的问题发生,所以还需要一种解决线程并发的机制,比如:加锁等。原创 2024-07-06 15:19:05 · 922 阅读 · 0 评论 -
单例模式之饿汉式
单例模式是一种创建性的设计模式,主要是保证一个类只能有一个实例。全局中保证一个实例的使用。缺点:不符合懒加载情况,在不使用该实例的时候会造成内存浪费。优点:提前实例化,不存在线程并发等问题。单例模式饿汉式主要的构成是如下。原创 2024-07-06 15:17:27 · 615 阅读 · 0 评论 -
抽象工厂模式
*** 抽象产品:ProductA*/void use();/*** 具体产品 ProductA1**/@Override/*** 具体产品 ProductA2**/@Override/*** 抽象产品:ProductB*/void use();/*** 具体产品 ProductB1**/@Override/*** 具体产品 ProductB2**/@Override/*** 抽象工厂**//*** 具体工厂 1**/原创 2024-07-04 10:14:27 · 439 阅读 · 0 评论 -
工厂方法模式
*** 产品**/void use();/*** 实现类**/@Override/** 抽象父类**//** 具体的子类工厂**/@Override。原创 2024-07-03 17:00:57 · 487 阅读 · 0 评论 -
工厂模式之简单工厂模式
System.out.println("Person , 我是一个人");@OverrideSystem.out.println("Student, 我是一名学生");@OverrideSystem.out.println("Man, 我是一名男人");@OverrideSystem.out.println("Lady,我是一名女生");}else{原创 2024-07-03 16:59:57 · 626 阅读 · 0 评论 -
策略模式实现
Service@Resource@Override//校验参数//修改状态值if (result!= 0){@Service@Resource@Override//校验参数//修改状态值if (result!= 0){定义一组策略(通过一个接口+多个实现类),为了减少 if - else 的时候,使用 map + 函数式编程存储策略方法,并且进行初始化。原创 2024-06-25 12:44:00 · 454 阅读 · 0 评论 -
单例模式(五种创建方式)
懒汉式:在使用时才加载对象,实现懒加载,资源利用。但是有可能会出现线程不安全的情况,可以使用加锁sychronized、双重检查、静态内部类等方式来解决。使用双重检查锁(Double check LockIng)实现,关键是volatile关键词,起到可见性和防止重排序的作用。实现起来较简单,定义私有构造,定义内部类、在内部类中创建静态常量的内部类。属于创建型的设计模式,保证使用的对象只需要创建一次,重复使用一个对象,确保资源的重复使用,是懒汉式的一种,可以在使用时才加载,而且不会被反射破坏。原创 2024-01-27 14:19:57 · 813 阅读 · 0 评论