随笔分类 - 设计模式
设计模式
摘要:1、简介 享元模式(Flyweight Pattern),主要用于减少对象的穿件,减少内存的占用以提高程序性能。 尝试重用现有对象,如果未找到匹配的对象,再去新建对象。 核心代码: 让Hashmap缓存这些对象 优点: 大大减少了对象的创建,降低系统内存,提高运行效率 缺点: 提高了系统的复杂度,需
阅读全文
摘要:1、简介 过滤器模式(Filter Pattern),这种模式允许开发人员以不同的标准来过滤一组对象,通过逻辑运算以解耦的方式将他们连接起来。 2、测试 // 过滤接口 public interface Criteria { List<People> meetingPeople(List<Peopl
阅读全文
摘要:1、简介 外观模式(Facaed Pattern),隐藏系统的复杂性,并向客户端提供一个可访问的接口。 核心代码:在客户端和复杂系统之间加上一层,在这一层将调用顺序、依赖关系处理好。 优点: 减少了系统相互依赖 提高了系统灵活性 提高了安全性 缺点: 不符合开闭原则,改东西很麻烦,继承重写都不合适。
阅读全文
摘要:1、简介 组合模式(Composite Pattern ),也叫部分整体模式,适用于将一组相似的对象当做一个单一的对象。组合模式依据树形对象来组合对象,用来表示部分与整体的关系。 核心代码:树枝内部组合接口,并且含有List,里面存放Compoment 优点: 高层模块调用简单,节点自由增加。 缺点
阅读全文
摘要:1、简介 使抽象和实现进行解耦,使得二者可以独立变化。通过抽象化和实现化之间的桥接结构实现解耦。 核心代码: 抽象类依赖实现类 一个简单的例子就是轮渡,轮渡公司可以过江,你也要过江,但你又不会游泳,这时就需要有个具体干事的东西,让轮渡公司去选择,你是要乘快艇、小船、还是游艇过江。 这里的游艇就相当于
阅读全文
摘要:1、简介 适配器(Adapater Pattern)作为二个不兼容接口的桥梁。 例如:内存卡 → 读卡器 → 电脑硬盘 简单来说,就是将一个类的接口转换为客户希望的另一个接口,使得原本因为接口不兼容的那些类可以一起工作。 关键思想: 继承或者依赖已有的对象,实现想要的目标接口 2、使用 // 高级播
阅读全文
摘要:代理模式 一个类拥有另一个类的功能。 介绍 意图: 为类提供一种代理以控制对这个类的访问 使用场景: 访问一个类时想做一些访问控制 关键代码 目标类和代理类相结合 优点: 保护目标对象 扩展性高 职责清晰 缺点: 处理速度变慢 实现可能会比较复杂 注意: 与装饰器模式区别: 1.侧重于访问控制 2.
阅读全文
摘要:装饰器模式 创建一个装饰类,用来包装原有的类,在保证不改变其结构完整的情况下,提供额外的功能。 介绍 意图 :动态的为类增加新的功能。 使用场景 :在不想增加许多子类的情况下扩展类。 关键代码 : Component类充当抽象角色,不应该是具体实现。 修饰类引用和继承Component类,具体扩展类
阅读全文
摘要:建造者模式: 一个Builder类一步一步构造最终对象,该Builder类是独立于其他对象的。 介绍 意图: 将一个复杂的构建与其表示相分离,使不同的构建过程可以创建不同的表示。 何时使用: 一些基本的组件不变,组合经常改变 关键代码: 建造者:创建和提供实例 导演:管理创建出来实例的关系 优点:
阅读全文
摘要:工厂模式: 在创建对象时,不会暴漏给调用者具体创建逻辑,是通过一个公共的接口指向创建的对象。 介绍 意图:创建一个创建对象的接口,让其子类来决定实例化哪一个工厂类,工厂模式使创建过程延迟到子类进行。 何时使用:明确不同情况下创建不同的实例。 关键代码:创建对象延迟到字类进行。 优点: 只需知道名称就
阅读全文
摘要:介绍: 主要思想 :该模式涉及到唯一的类,由该类自己管理自己的实例对象,保证只有一个实例对象会被创建,对外提供一个访问其唯一对象的方法,直接访问该方法取实例对象,无需实例化。 意图 :保证该类只有一个实例,并提供一个全局访问点。 何时使用 :一个全局使用的类被频繁的创建和释放,控制实例条目,节省系统
阅读全文
浙公网安备 33010602011771号