把书读薄 | 《设计模式之美》设计模式与范式(结构型-享元模式)(下)
运行结果输出如下:网络异常,图片无法展示|使用享元模式只创建了4个卡牌对象,提提内部状态和外部状态的概念:内部状态:固定不变可共享 的部分,存储在享元对象内部,比如这里的花色;外部状态:可变不可共享 的部分,一般由客户端传入享元对象内部,比如这里的大小;当然,状态的区分也不是绝对的,要看场景,比如扩展到斗地主的对局,内部状态就变成了54张牌(怎么发都不会超过54张),外部状态变成了牌的持有人。扩....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-享元模式)(上)
0x0、引言提测了等改BUG,摸鱼时啃下《设计模式之美》,本文对应设计模式与范式:结构型(54-55),享元模式 (Flyweight Pattern),结构型设计模式最后一个~很好理解 → 享元,被共享的单元意图 → 节省内存,复用不可变对象换句话说 → 找出相似对象间的共有特征,然后复用这些特征。一个形象的例子:游戏开发中,一个森林场景,成千上万种树,每棵树都实例化不同的模型,内存直接爆炸,....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-组合模式)
0x1、定义将对象组合成 树形结构 以表示整个部分的层次结构,让用户可以 统一对待 对象和对象的组合。云里雾里?写个简单例子帮助理解~0x2、写个简单例子还是奶茶店的例子(树形结构):网络异常,图片无法展示|不难分解成两类,并假设有后面的需求:菜单:菜单名、描述信息、增删子菜单或饮品;饮品:名称、描述信息、价格、打印信息下面我们用常规代码实现一波:// 抽象出一个饮品的类(此处是为了偷懒减少方法....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-门面模式)
0x1、定义为子系统提供一组统一的接口,定义一个更高层接口让子系统更易用。从定义可以看出门面模式的本质就是 统一多个接口的功能,简化外部系统使用内部多个子系统的使用方式。举个形象的例子:电表箱网络异常,图片无法展示|主卧、餐厅、阳台等可以看做是 子系统,而电表箱就是 更高层的接口,通过电表箱可以对每个子系统进行电源控制。而扩展到实际开发中的例子:A系统提供a、b、c、d四个接口,B系统完成某个功....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-适配器模式)(下)
0x3、对象适配器还是上面的例子,改用对象适配器写一波,直接新建一个对象适配器类:public class ObjectAdapter implements Chinese { private English english; public ObjectAdapter(English english) { this.english = english; }...

把书读薄 | 《设计模式之美》设计模式与范式(结构型-适配器模式)(上)
0x1、定义适配器,很好理解,比如手边的电脑电源适配器,它的作用就是将 220V的家用交流电 转换成 20V的直流电,又比如苹果笔记本电脑,只有 雷电接口,如果想用 USB接口的键鼠/网线,需要一个 扩展坞/转接头。网络异常,图片无法展示|将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能在一起工作的类可以一起工作,这就是适配器模式。简单点说:两个彼此间没有太大关联的类,想要交互完成某....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-装饰器模式)(下)
四个角色:Component (抽象组件) → 声明具体组件实现的业务方法,让客户端以一致的方式处理为修饰和修饰后的对象;ConcreteComponent (具体组件) → 抽象组件的具体实现;Decorator (抽象装饰类) → 包含对组件的引用,并重写抽象组件的方法;ConcreteDecorator (具体装饰类) → 抽象装饰类的具体实现,除了重写方法外,还可以添加附加功能;适用场景....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-装饰器模式)(上)
0x1、定义允许动态地向一个现有的对象添加新功能,同时不改变其结构,相当于对现有对象的进行了一个包装。很好理解,就是套了一层,跟代理模式又不一样,装饰器模式可以套娃一样套多层。0x2、写个例子桥接模式 → 广度,装饰器模式 → 深度,咋体现?还是上节形状的例子:abstract class Shape { abstract void show(); } // 形状 public clas...

把书读薄 | 《设计模式之美》设计模式与范式(结构型-桥接模式)
0x0、引言日常更新,忙里偷闲啃《设计模式之美》,本文对应设计模式与范式:结构型(49),桥接模式 (Bridge Pattern)。上节学了第一种结构型设计模式 → 代理模式 → 在不改变原始类(被代理类)的情况下,通过引入代理类来给原始类附加功能。而桥接模式有两种理解方式:将抽象和实现解耦,让它们能独立开发;(应用场景较少)用抽象关联取代多层继承,将类间的继承关系转换为动态的对象....

把书读薄 | 《设计模式之美》设计模式与范式(结构型-代理模式)(下)
运行结果如下:网络异常,图片无法展示|接着可以打开看看 $Proxy0 这个动态代理类:网络异常,图片无法展示|static代码块中获取代理方法,然后利用反射调用动态代理类的方法。看着比较简单,接着看下背后的原理。② JDK动态代理的实现原理跟下Proxy的 newProxyInstance() 方法:网络异常,图片无法展示|先跟下 getProxyClass0() 查找或生成代理类的方法:网络....

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