摘要:(享元模式) 定义 享元模式是对象的结构模式,享元模式以共享的方式高效的支持大量的细粒度对象,主要用于减少创建对象的数量,以减少内存占用和提高性能 享元对象能做到共享的关键在于区分了内蕴状态和外蕴状态 内蕴状态是存储在享元对象内部的,并且是不会随环境的改变而有所不同,因此,一个享元对象可以具有内蕴状
阅读全文
摘要:(组合模式) 示例 有一个绘图系统,可以描绘各种图形,假设现在可以描绘线、长方形、圆形 定义一个抽象类,所有的图形继承此类,完成绘图: public abstract class Graphics { /** 绘图 */ public abstract void draw(); } 线、长方形、圆形
阅读全文
摘要:(中介者模式) 应用场景 系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类 中介者模式 定义 包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用,从而使得他们比较松散的耦合 设计原则:迪米特
阅读全文
摘要:(模板方法模式) 示例 当我们设计一个类时,我们能明确它对外提供的某个方法的内部执行步骤, 但一些步骤,不同的子类有不同的行为时,我们该如何来设计该类? 下面以玩王者荣耀为例展开学习: 玩游戏首先需要初始化游戏,然后加载地图、加载角色、然后才能开始游戏,最后结束游戏 定义一个Game类: publi
阅读全文
摘要:(桥接模式) 示例 请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思 想设计图形 分析: 1、比如有红、黄、蓝三种颜色 2、形状有方形、圆、三角形 3、圆可以是红圆、黄圆、蓝圆 从上面可以看到,变化的地方有两个: 1、形状 2、颜色 任其在两个维度各自变化,为这两个维度搭个桥,让它
阅读全文
摘要:(状态模式) 示例 一个类对外提供了多个行为,同时该类对象有多种状态,不同状态下对外的 行为的表现不同,我们该如何来设计该类让它对状态可以灵活扩展? 以自动售卖饮料机为例开发一个程序: 用户可以在饮料机上进行支付、退款、购买、取货操作 不同的状态下,这四种操作会有不同的表现 例如:在用户没有支付的情
阅读全文
摘要:(命令模式) 示例 系统需要设计一个命令行界面,用户可输入命令来执行某项功能,系统的功能会不断增加,命令也会不断的增加 如何将一项一项的功能加入到这个命令行界面? 如何让命令行程序写好后,不因功能的添加而修改,又可以灵活的加入命令和功能? 下面以奶茶店售卖奶茶为例: public class Mas
阅读全文
摘要:(责任链模式) 应用场景 http web请求处理,请求过来后将经过转码、解析、参数封装、鉴权等一系列的处理(责任),而且要经过多少处理是可以灵活调整的 那么该怎么做呢? 将所有的处理都写在一个类中行不行呢? 分成多个类又该如何灵活的组合在一起呢? 简单示例 Request类: public int
阅读全文
摘要:(外观(门面)模式) 应用场景 使用方要完成一个功能,需要调用提供方的多个接口、方法,调用过程复杂时,我们可以再提供一个高层接口(新的外观),将复杂的调用过程向使用方隐藏,适配器模式的变种 外观模式 定义 隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口 意图 为子系统中的一组接口提供
阅读全文
摘要:(适配器模式) 应用场景 使用者依赖的接口与提供者的接口不匹配时,就加一层适配,而不修改两端的代码 生活中使用的风扇,假设插头是两孔的,但是我们家里墙上的插座只有三孔的,这个时候就需要一个适配器了,这个适配器就是外面买的插座,以上场景为例,写一个例子: 三孔的插座: public class Thr
阅读全文
摘要:(观察者模式) 观察者模式 示例 微信公众号,关注就可以收到推送的消息,取消关注就不会收到 定义 定义了对象之间一对多的依赖关系,当一端对象发生改变时,它的所有依赖者都会收到通知并自动更新(被调用更新方法) 观察者模式也被称为:监听模式、发布订阅模式。提供了一种对象之间松耦合的设计方式 面向接口编程
阅读全文
摘要:(装饰者模式) 应用场景 京东、天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减50 每满减:每满100减10 打折:买两件8折,三件7折 数量减:满三件减去最低价的一件 假设现在顾客买了两件衣服先是打了8折,然后又满200减了50,促销活动多重叠加了,该如何灵活实现订单金额
阅读全文
摘要:(策略模式) 应用场景 京东、天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减50 每满减:每满100减10 打折:买两件8折,三件7折 数量减:满三件减去最低价的一件 顾客在下单的时候可以选择其中几种来剁手,那么后端怎么来灵活的应对金额的计算呢,以后可能不同的节日还会有更多
阅读全文
摘要:(设计原则) 单一职责原则 SRP 一个类只有一个引起修改变化的原因,也就是只负责一个职责。核心思想:高内聚,低耦合 假设一个类有多个功能,当修改其中一个功能的时候,可能会对其他功能造成影响 优点: 1:降低类的复杂度,一个类负责一个职责,比负责多项职责要简单 2:代码的可读性提高了,也方便以后的维
阅读全文
摘要:(Java设计思想) OOP思想(Object Oriented Programming) 类和对象 在面向对象中,类和对象是最基本、最重要的组成单元 类:类可以说是一个模板,它描述了一类对象的行为和状态 对象:对象是类的一个实例,有对应的状态和行为 类是做什么用的呢:模拟现实,封装数据和代码 假如
阅读全文