文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(结构型-代理模式)(上)

跟前面学的 创建型 设计模式:用来解决对象创建问题 (封装复杂的创建过程,解耦对象的创建代码和使用代码)不同,结构型 设计模式:总结了一些类或对象组合在一起的经典结构 (用于解决特定应用场景的问题)本节先来探探代理模式,知道模式是啥,应用场景,静态代理和动态代理就差不多了~二手知识加工难免有所纰漏,感兴趣有时间的可自行查阅原文,谢谢。0x1、定义和应用场景代理,这个概念很好理解,举个形象化的例子....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-代理模式)(上)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-原型模式)

0x1、定义与使用场景又称 克隆模式,定义如下:如果对象的 创建成本较大,且同一个类的不同对象间差别不大(大部分字段相同)的情况下,可以利用已有对象(原型)进行复制(或者叫拷贝、克隆)的方式来创建新的对象,以达到节省创建时间的目的。简单点说就是以某个对象为原型,克隆出一个一模一样的对象,常见应用场景:资源优化 (对象初始化需使用较多外部资源时,如IO、数据库、CPU,权限等);复杂依赖 (依赖嵌....

把书读薄 | 《设计模式之美》设计模式与范式(创建型-原型模式)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-建造者模式)

0x1、为什么需要Builder模式当类中的属性很多时,为了避免构造函数参数列表过长影响代码可读性与易用性,可以通过 构造函数配合set()方法 解决。但如果存在下述情况中的一种,就要考虑使用Builder模式了:① 强制创建对象的时候就设置一些必填属性(放构造方法中),如果必填属性很多,又会出现构造函数参数列表过长的问题。如果把必填属性放到set()中设置,那么校验必填属性是否已填写的逻辑就无....

把书读薄 | 《设计模式之美》设计模式与范式(创建型-建造者模式)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-工厂模式)(下)

其中最关键的角色是 → 抽象产品,它的好坏直接决定了抽象工厂和具体功能能否发挥最大作用,应用此模式时应该朝着 分析共性规律 的方向走,仔细分析实现类该如何实现。以上面说的茶和小吃为例写个抽象工厂模式的例子,先是产品类:// 抽象产品类① public abstract class Tea { protected abstract String createTea(); } // 抽象产品...

把书读薄 | 《设计模式之美》设计模式与范式(创建型-工厂模式)(下)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-工厂模式)(中)

运行结果同上,这就是 简单工厂 模式,由 抽象产品、具体产品、工厂 三个要素组成,工厂内有具体的逻辑去判断生成怎么样的产品。另外,如果奶茶实例可以服用的话,为了节省内存和对象创建时间,可以将其事先创建好缓存起来,调用createTea()时,从缓存中直接取出parse对象直接使用。public class NewTeaStore { private static final Map<...

文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-工厂模式)(上)

0x1、定义一般将工厂模式细分为种:简单工厂、工厂方法 和 抽象工厂,前两个在项目中用得多一些。适用场景:创建一个对象,但创建过程比较复杂,希望对外隐藏这些细节。注意!适用于对象创建过程比较复杂的场景,一般是这两类:创建过程涉及复杂的if-else分支判断 和 复杂依赖 (如new A(new B(new C()))),应用工厂模式无疑会带来类文件的增加,简单的场景直接new构造不香吗?接下来通....

把书读薄 | 《设计模式之美》设计模式与范式(创建型-工厂模式)(上)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-单例模式)(下)

② 如何保证克隆安全而防克隆则是要来到父类**Enum类**中,直接实现了clone()函数:网络异常,图片无法展示|调用此函数直接返回 CloneNotSupportedException 异常。③ 如何保证反射安全将反射部分代码中的Singleton改成SingletonEnum,接着运行下,抛出下述异常网络异常,图片无法展示|在获取构造函数时抛出的异常,没有此构造方法,呕吼,看回jad反编....

把书读薄 | 《设计模式之美》设计模式与范式(创建型-单例模式)(下)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-单例模式)(中)

⑤ 静态内部类(懒加载,线程安全,非常推荐)public class Singleton { private Singleton() { } public static Singleton getInstance() { return SingletonHolder.INSTANCE; } private static class Singleto...

把书读薄 | 《设计模式之美》设计模式与范式(创建型-单例模式)(中)
文章 2022-06-13 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(创建型-单例模式)(上)

0x1、定义网络异常,图片无法展示|0x2、单例写法的演进① 饿汉式(没有懒加载,线程安全,常用)public class Singleton () { private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstanc...

把书读薄 | 《设计模式之美》设计模式与范式(创建型-单例模式)(上)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等