随笔分类 - Java设计模式
摘要:桥接模式: 桥接模式核心要点: – 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立 的继承结构,使各个维度可以独立的扩展在抽象层建立关联。 桥接模式总结: – 桥接模式可以取代多层继承的方案。 多层继承违背了单一职责原则, 复用性较差,类的个数也非常多。桥接模式可以极大的减少子类的个
阅读全文
摘要:原型模式: – 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 – 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点 – 优势有:效率高(直接克隆,避免了重新执行构造过程步骤) 。 – 克隆类似于new,但是不同于new。ne
阅读全文
摘要:工厂模式: – 实现了创建者和调用者的分离。 – 详细分类: • 简单工厂模式 • 工厂方法模式 • 抽象工厂模式• 面向对象设计的基本原则: – OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开 放,对修改关闭。 DIP(依赖倒转原则,Dependence
阅读全文
摘要:创建型模式: – 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。 • 结构型模式: – 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模 式。 • 行为型模式: – 模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模 式、解释器模式、状态模式、策略模式
阅读全文
摘要:定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的依赖者(观察者)都会收到通知并更新 适用场景: 关联行为场景,建立一套触发机制 优点: 1.观察者和被观察者之间建立一个抽象的耦合 2.观察者模式支持广播通讯 缺点: 观察者之间有过多的细节依赖,提高
阅读全文
摘要:定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户 类型:行为型 使用场景: 系统有很多类,而他们的区别仅仅在于他们的行为不同。 一个系统需要动态地在集中算法中选择一种 优点: 1.开闭原则 2.避免使用多重条件转义语句 3.提高算法的保密性和安全性 缺
阅读全文
摘要:定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示。 类型:行为型 适用场景: 访问一个集合对象的内容而无需暴露它的内部表示 为遍历不同的集合结构提供一个统一的接口 优点: 分离了集合对象的遍历行为 缺点: 类的个数成对增加
阅读全文
摘要:定义:定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现 模板方法使得子类可以在不改变算法的结构的情况下,重新定义算法的某些步骤 类型:行为型 一次性实现一个算法的不变的部分,并将可变的行为留给子类实现 各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复 优点: 提高复用性
阅读全文
摘要:定义:将抽象部分与它的具体实现部分分离,使他们都可以独立的变化 通过组合的方式建立两个类之间联系,而不是继承 类型:结构型 适用场景: 抽象和具体实现之间增加更多的灵活性 一个类存在两个(或多个)独立变化的维度,且这两个(或多个)都需要独立进行拓展 不希望使用继承,或因为多层继承导致系统类的个数剧增
阅读全文
摘要:定义:将对象组合成树形结构以表示 部分--整体的层次结构 组合模式使客户端对单个对象和组合对象保持一致的方式处理 类型:结构型 优点: 1.清楚地定义分层次的复杂对象,表示对象的全部去或部分层次 2.让客户端忽略了层次的差异,方便对整个层次结构进行控制 3.简化客户端代码 4.符合开闭原则
阅读全文
摘要:定义:提供了减少对象数量从而改善应用所需的对象结构的方式 运用共享技术有效支持大量细微度的对象 类型:结构型 应用场景:系统底层的开发啊,以便解决系统的性能问题 系统有大量的相似对象,需要缓存池的场景 优点: 减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率 减少内存之外的其他资源占用
阅读全文
摘要:定义:将一个类的接口转换成用户期望的另一个接口 使原本接口不兼容的类可以一起工作 结构型 应用场景: 已经存在的类,他的方法和需求不匹配时(方法结果相同或相似) 功能类似而接口不相同的情况下的解决方案 优点: 能提高类的透明性和复用,现有的类复用但不需要改变 目标类和适配器 类解耦,提高程序扩展性
阅读全文