Java设计模式 - 24种

设计模式的七大原则

    开闭原则:对扩展开放、对修改关闭。
    单一指责原则:一个类只做一件事。
    依赖倒转原则:类似于ioc,采用接口编程。
    迪米特原则:高内聚,低耦合。
    接口隔离原则:应该使用多个接口,而不是用单一的总接口。
    合成复用原则:尽量使用对象组合,而不是继承来达到复用目的。
    里氏替换原则:子类可以扩展父类的功能,但不能改变原有的功能。


https://blog.csdn.net/sumengnan/article/details/113689824

1 单例模式(Singleton)

保证一个类只有一个实例,并提供一个全局访问点。四种单例实现方式:懒汉模式,饿汉模式,静态内部类模式,枚举(enum)模式

单例模式的设计要素

  • 一个私有构造函数 (确保只能单例类自己创建实例) -> private Singleton() {}
  • 一个私有静态变量 (确保只有一个实例) ->   private static Singleton uniqueInstance;
  • 一个公有静态函数 (给使用者提供调用方法) -> public static Singleton getUniqueInstance() {}

java设计模式之单例模式singleton_现实、太残忍的博客-CSDN博客

https://www.nowcoder.com/questionTerminal/c329b173a9b34cb1af6165395b8e7635

 

 

2 工厂模式(Factory)

把对象的创建功能交给工厂,达到解耦目的。包含三种模式(简单工厂模式,抽象工厂模式,工厂方法模式)

2.1 简单工厂模式: 提供一个工厂类,在工厂类中做判断,根据传入的类型创造相应的产品。

实现方案
有一个汽车(Car)接口,包含一个方法start() 输出自己的信息,然后现在有两种车辆,奔驰、吉普。

 

 

 

2.2 工厂方法模式定义: 定义了一个用来创建对象的接口,让它的子类决定实例化哪一个产品类,并且由这个实现类创建对应产品类的实例,让系统同时具备了弹性和扩展性。

实现方案

如图,我们提供了一个工厂接口,创建产品由他的子类完成,拿车子来说,就是每一种汽车都有专门的工厂生产,而工厂继承于工厂接口。

 

 扩展性如图:

 

 

2.3 抽象工厂模式定义: 提供一个抽象接口,用于创建相关或依赖对象的产品,而不需要明确指定具体类。

和工厂方法模式的区别在于:抽象工厂是可以生产多个产品的,例如 BenzCarFactoty 奔驰工厂里可以生产 BenzTyre(轮胎) 以及 BenzEngine(发动机)两个产品,而这两个产品又是属于一个系列的,因为它们都是属于奔驰工厂的产品。而工厂方法模式则只能生产一个产品,例如之前的 BenzCarFactoty 里就只可以生产一个 BencCar 产品。

实现方案:

 

 

 

 

https://blog.csdn.net/GeorgeGuoo/article/details/86660484

 https://blog.csdn.net/qq_45867375/article/details/124597130

3 观察者模式(Observer/Listener)

模式中包含两种对象,分别是目标对象和观察者对象。在目标对象和观察者对象间存在着一种一对多的对应关系,当这个目标对象的状态发生变化时,所有依赖于它的观察者对象都会得到通知并执行它们各自特有的行为

适合场景:
    当一个对象的改变需要改变其他对象时,或实际对象时事先未知的或动态变化。
    当应用中的一些对象必须观察其他对象时。

用例:
    EventListener
    tomcat的LifeCycleListener
    使用zookeeper作为观察者,例如分布式锁、服务发现等

4 适配器模式

 

posted @ 2022-11-22 10:02  NingShare  阅读(3572)  评论(0编辑  收藏  举报