单例模式:一般用于保证一个类只有一个实例存在,而且这个实例要自己负责创建和管理,比如我们的日志系统,就可以用单例模式来保证只有一个日志对象在运行。(有两种常见的实现方式,分别是懒汉式和饿汉式,懒汉式就是在第一个使用的时候才创建实例,这样可以节省内存,但线程不安全。饿汉式则是在类加载的时候就创建实例,线程安全,但会浪费一些内存。)
观察者模式:用于实现对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新,比如我们的事件总线,就可以用观察者模式来实现。在java中通常通过实现Observer接口和Observable类来实现观察者模式,这样主题可以添加、删除观察者,并在状态改变时通知他们。
工厂模式:将对象的创建和使用分离,通过一个工厂类来负责创建对象,这样做的好处是可以提高代码的可维护性和可扩展性,当需要创建新的对象时,只需要在工厂类中修改代码,而不需要在所有使用该对象的地方都进行修改。工厂模式有多种类型,比如简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式就是在工厂类中提供一个创建对象的方法,根据传入的参数类决定创建哪种具体的对象;工厂方法模式则是将创建对象的方法封装在具体的工厂子类中;抽象工厂模式则是提供一系列相关对象的接口。
策略模式:定义一系列算法,并将每个算法封装起来,使它们可以相互替换,我们可以根据不同的情况选择不同的算法来完成任务,这样可以让代码更加灵活和可维护。
代理模式:主要作用是其他对象提供一种代理以控制对这个对象的访问。比如说要访问一个远程服务器上的资源,直接访问可以会很慢,这时就可以使用代理模式,先让代理去访问远程资源,然后把结果返回给你,这样就可以提高访问速度了。(这里有静态代理和动态代理两种情况,静态代理就是在代码中提前写稿代理类和被代理类的关系,这种方式比较简单直观,但如果代理类很多,就会显得繁琐。动态代理则是在运行根据需要动态生成代理类,它的灵活性更高,更适合dialing类较多的情况,在java中动态代理可以通过实现InvocationHander接口和使用Proxy类来实现)