设计模式
设计模式
Andy_Health
永远不要停止奔跑。
展开
-
设计模式 - 命令模式
命令模式直接请求,依赖关系太强。Handler类的改变,需要修改ListView1、执行对象Handler没有抽象接口, ListView直接使用Handler耦合性太大2、增加一个Command层,抽象出一个Command接口,由子类包装Handler实体3、ListView对Command接口编程,选择调用command子类,从而发送不同的请求通过增加Command抽象命令类,将不符合抽象编程的handler 调用,转为抽象编程。...原创 2020-07-07 10:57:52 · 862 阅读 · 0 评论 -
设计模式 - 观察者模式
观察者模式很好吃,但是库存没了,许多顾客都关注青芒何时能到货?一个对象状态改变时通知其他对象。为的是尽量弱化对象间的依赖。JDK 对观察者模式的支持原创 2020-07-07 10:40:29 · 120 阅读 · 0 评论 -
设计模式 - 责任链模式
责任链模式每个订单,可用多张优惠券叠加减免将请求传给一个接收者链,由链将请求流转给目标对象。1、Calculate方法内,判断next结点不为null,则继续调用next.calculate()2、客户端调用时,负责初始化整个责任链PS:当出现多个对象可以处理同一个请求时,适合责任链模式...原创 2020-07-06 17:54:44 · 425 阅读 · 0 评论 -
设计模式 - 策略模式
策略模式每个订单,可选用一张优惠券通过选择策略类,来执行不同算法分支。核心是通过注入对象,改变行为。1、将每一种优惠策略,单独成一个组件对象,独出来。2、使用方通过选择不同的组件,达到不同的行为。PS:此模式其实就是spring IOC思想。...原创 2020-07-06 17:43:06 · 1472 阅读 · 0 评论 -
设计模式 - 模板方法模式
模板方法模式水果店不断扩展结算方式,希望不影响购物流程在父类中编排主流程,将步骤实现延迟到子类去实现。1、先将主流程框架逻辑(清点商品/计算价目/结算/送货上门)设计完成2、再实现各模块小步骤。3、不能确实的步骤,作为虚拟方法,甩锅给子类实现。3、子类只需要聚焦自己的小步骤逻辑。...原创 2020-07-06 17:33:13 · 507 阅读 · 0 评论 -
设计模式 - 外观模式
外观模式客户下单付款后,有一系列的动作:采摘/商品包装/物流送货糅合功能,对外只提供一个入口1、调用方只关注facade组件,不需要知道底层服务。2、隐藏掉底层服务中,不相干的功能。场景:当访问流程较复杂时,将流程封闭成一个接口,供外部使用...原创 2020-07-06 17:14:03 · 104 阅读 · 0 评论 -
设计模式 - 组合模式
组合模式1、行政区划有三级至五级不等2、组织这个一样目录,供客户选择3、如果每级区划使用一个类,需要五个类,太复杂4、希望能简化把一组相似的对象当作一个单一的对象,为的是减少数据类型。1、定义一个抽象对象,它可以表示两种或多种实际类型的对象2、在对象内部,聚合一个抽象类型对象3、构造时,递归这种联系4、适合构造树形结构的对象关系...原创 2020-07-06 16:58:57 · 563 阅读 · 0 评论 -
设计模式 - 代理模式
代理模式水果店与第三方合作,开展了海外水果代购服务代理模式和装饰模式区别PS:都是当前对象无法胜任主功能,转给第三方对象来完成主功能。装饰目标是增强自身(第三方是我内部),代理目标是找经纪人/甩锅(外部)。...原创 2020-07-06 16:38:01 · 1411 阅读 · 0 评论 -
设计模式 - 装饰器模式
装饰器模式打包水果时,需要做打防伪/加固/加急等一些附加动作动态地给一个对象增加一些额外的职责,为的是功能增强。原创 2020-07-06 16:05:43 · 107 阅读 · 0 评论 -
设计模式 - 桥接模式
桥接模式需要先确定采摘袋的大小和材质1、采摘袋有两个属性:大小与材质2、取舍采摘袋的主要属性,是大小;附属属性是材质。3、剥离掉附属属性材质,放入一个扩展实体中去。将两个维度变化的功能组合起来,为的是独立变化。1、 材质属性Material,单独成为一个扩展属性接口2、 BagAbstraction组合Material接口对象3、 BagAbstraction具有四个子类(大/中/小/迷你),与Material子类组合变化适配器模式和桥接模式的比较PS:都是把两个对象组合起来配合工原创 2020-07-06 14:25:14 · 114 阅读 · 0 评论 -
设计模式 - 适配器模式
适配器模式组合中,a、b变量名持有的对象,可以是A、B类的子类。在程序的运行中,还可以更换a、b实际的对象,更为灵活。用法:1、 OrangeBagAdapter继承OrangeBag的功能,同时组合AppleBag对象,使OrangeBag与AppleBag产生关联。2、当OrangeBag目标方法被调用时, OrangeBagAdapter转调AppleBag的对象方法PS: OrangeBag和AppleBag都是已有类,是系统已有方法。整个过程,只新增了一个OrangeBagAdap原创 2020-07-06 14:00:39 · 139 阅读 · 0 评论 -
设计模式 - 单例模式
饿汉式在静态变量里,直接初始化实例。懒汉式1、在静态变量里,只声明变量。2、在第一次获取实例的请求getInstance()到来时,才创建实例。懒汉式使用双重校验锁原创 2020-07-03 17:17:41 · 106 阅读 · 0 评论 -
设计模式 - 建造者模式
建造者模式水果店推出水果套餐,老顾客优惠10元,节假日套餐优惠15元原创 2020-07-03 16:47:04 · 93 阅读 · 0 评论 -
设计模式 - 工程模式
简单工厂模式使用者只须持有水果接口,再也不需要关心具体的水果类了工厂方法模式将工厂类抽象出一个接口,对象的创建方法延迟到工厂子类去实现。1、为了弥补这种扩展性。在工厂方法模式中,将工厂方法抽象出来,成单独接口。2、工厂类结构与产品类结构一一对应,每一种产品都对应一个工厂子类。3、当新增一个产品类型时,新加对应的工厂子类即可,不再需要修改既有类。抽象工厂模式1、水果邮寄客户时,需要包装。2、产品分成了两个系列,一个水果系列,一个包装盒系列转变为不同水果有不同包装规格原创 2020-07-03 16:06:27 · 438 阅读 · 0 评论