05 2022 档案
摘要:策略模式 定义一组算法类,将每个算法都封装成单独的类,这些类可以相互替换。算法的变化不影响调用者的使用。 1.定义 定义一个策略接口,所有的策略类都基于这个接口实现,重写接口的方法。 2.创建 通过类型(type)判断创建哪个策略。这部分逻辑可以用工厂类写。 (1)如果策略是无状态的: 在工厂类里创
阅读全文
摘要:模板模式 解决的问题 复用和扩展 复用:将不变的逻辑放到父类的模板方法里,可变的逻辑放到子类中实现。然后统一调用父类的模板方法去执行。也就是说所有的子类可以复用父类中的模板方法。 扩展(框架的扩展性):类似于控制反转。 控制反转:抽象出一个类,类里面一部分是固定的逻辑,一部分是接口,留给子类实现。不
阅读全文
摘要:观察者模式 三种设计模式主要解决的问题: 1, 创建型:解决“对象的创建” 2, 结构型:解决“类或对象的组合或组装” 3, 行为型:解决“类或对象之间的交互” 定义 在对象间定义一个一对多的依赖,当一个对象状态发生改变,所有依赖的对象都会自动收到通知。由于该模式比较抽象,所以不同的应用场景和需求,
阅读全文
摘要:组合模式 应用场景:当数据是树形结构时,可应用组合模式,大大简化了代码的实现。 实现:将一组对象组织成树形结构,将单个对象和组合对象都看成树中的节点,以统一处理逻辑。并利用树形结构的特点,递归的处理每个子树,以简化代码的实现。 把子对象放到父对象里,递归的时候可以调用子对象。
阅读全文
摘要:门面模式 定义 提供一个高层的接口,这个接口里包括一组接口,给用户调用。这组被包裹的接口是所有接口的一个子集。可以避免用户多次调用不同接口,同时又避免了调用所有的接口。比如,系统A有a、b、c、d四个接口,系统B只需要a、b、d三个接口。可以将a、b、d三个接口包裹成一个门面接口给系统B使用。 应用
阅读全文
摘要:适配器模式 解决的问题: 将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 可以用于补救设计上的缺陷。 类适配器: 使用继承关系实现 适配器类继承自类并实现不兼容的接口,兼容的部分可以直接调用,不兼容的部分可以重写。 adapter extens Class i
阅读全文
摘要:客户生成公钥和私钥 公钥放到服务器上 客户发送登录请求给服务器 服务器返回随机数据给客户 客户通过私钥对随机数据进行加密,然后发给服务器 服务器通过公钥对加密后的随机数据进行解密,和之前发送出去的随机数据进行对比,一致则通过登录请求
阅读全文
摘要:桥接模式 定义有两种 1,来自GoF的《设计模式》:将抽象和实际解耦,两者可以独立变化。 2,一个类有两个及以上的变化维度,通过组合的方式,让这两个及以上的维度可以独立进行扩展。 如何实现 基于接口实现同个维度下的各种变化,然后再组合使用。 金句 很多设计模式都是通过将庞大的类拆成细小的类,然后通过
阅读全文
摘要:代理模式 不改变原始类,引入代理类给原始类增加功能。 1,原始类是自己写的代码: 组合 将原始类和代理类都基于接口实现。代理类的方法内调用原始类,并在前后增加新的代码以实现新功能。 2,原始类是第三方库,无法修改或者没有基于接口实现: 继承 代理类继承自原始类,然后通过super调用原始类里的方法,
阅读全文
摘要:background: 系统A启动的时候加载数据到内存,并解析到hashmap里; 系统B分析日志,定期更新数据库中的数据,并标记为最新的数据版本; 需求1 系统A需要定期根据数据库中的数据,更新内存中的数据: 记录当前数据的版本和更新时间,然后定期从数据库中取出新增的数据并解析到hashmap里。
阅读全文
摘要:当构造函数里的参数很多,并且有很多是非必填的参数时,这些参数可以通过写单独的set()方法进行设置。必填的参数写在构造函数里。 先new一个对象出来,然后通过set()方法设置其他参数。 但是会有如下三个问题: 1,当必填参数很多的时候,构造函数里会写很多。如果将参数通过set()设置,则没法写参数
阅读全文
摘要:简单工厂: 将创建类的代码剥离出来,放到一个类里面,通过实例化这个类去获取想要的对象。 先将多个类的对象存储到map里,然后通过get方法从里面获取 工厂方法: 基于接口去实现多个不同的方法,类继承自接口,然后重写方法 类里面再创建一个静态类,静态类里从父类获取对应的方法的逻辑,父类里时多种不同的实
阅读全文
摘要:基于接口实现 使用组合而非继承 先创建一个类,在类里面定义一个set的方法。 然后创建一个类的实例,通过这个实例调用set方法设置参数 然后通过这个实例调用这个类里面的其他方法 一个接口 基于这个接口实现两种viewer类 然后在组装类(上帝类 god class)里面使用到这个viewer类以及其
阅读全文
摘要:rws的解释: 当文件的权限为rws时,表示当用户去访问这个文件时,不是用自己的权限,而是用的文件的所用者的权限访问该文件。 如何设置: chmod u+s chmod +x rws:设置了set-uid的flag,并且有执行权限 rwS:设置了set-uid的flag,但是没有加可执行权限 Ref
阅读全文