单例模式
单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供一个全局访问点,单例模式的实现主要有懒汉式和饿汉式两种。
1、懒汉式:在第一次调用时实例化对象,实现了延迟加载,如果单例模式的对象需要执行一些耗时的操作,这种方式会导致线程阻塞,影响性能。
public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
2、饿汉式:在类加载时就完成了实例化,避免了线程同步问题,性能较好,如果单例模式的对象需要执行一些耗时的操作,这种方式也会导致线程阻塞,影响性能。
public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
工厂模式
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,在工厂模式中,创建对象的工作不是由调用者直接完成的,而是由一个工厂类负责,这样可以将对象的创建和使用解耦,提高代码的可维护性。
1、直接返回对象:最简单的工厂模式,直接返回创建的对象,这种方式简单易用,但不利于代码的扩展。
public class ProductFactory { public Product createProduct() { return new Product(); } }
2、通过条件判断返回对象:根据不同的条件返回不同的对象,这种方式可以实现一定程度的扩展性,但增加了判断的复杂度。
public class ProductFactory { public Product createProduct(String type) { if ("A".equals(type)) { return new AProduct(); } else if ("B".equals(type)) { return new BProduct(); } else { return new Product(); } } }
3、通过工厂方法生成对象:定义一个抽象的工厂类,让子类来实现具体的工厂方法,这种方式实现了高阶函数,提高了代码的复用性。
public interface ProductFactory { Product createProduct(); }
public class ConcreteProductFactory implements ProductFactory { @Override public Product createProduct() { return new ConcreteProduct(); } }
装饰器模式
装饰器模式是一种结构型设计模式,它允许在不修改原始对象的基础上,动态地给对象添加新的功能,装饰器模式主要包括两个角色:抽象组件和具体组件,具体组件是原始对象,抽象组件是装饰器,它们之间通过继承关系相互协作。
1、具体组件:实现抽象组件接口,定义需要被装饰的行为,这里以门为例,门是一个具体的组件。
public interface DoorComponent extends Component { }
2、具体装饰器A:实现抽象组件接口,继承具体组件,并添加新的功能,这里以安全门为例,安全门是具体装饰器A。
public class SafetyDoor extends DoorComponent implements SafetyDecoratorSpecification { private DoorComponent door; public SafetyDoor(DoorComponent door) {} //构造方法中传入门作为基础组件进行装饰操作,这里省略了对门的具体装饰过程,最终将装饰后的门返回即可完成装饰操作,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可,如下所示:return decorate(door);//装饰器的decorate方法用来完成对基础组件的具体装饰处理,最终返回装饰后的对象即可.如下所示:return decorate(door);//
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/262394.html