
设计模式
表态-博
菜鸟,慢慢积累经验
展开
-
设计模式-策略模式
一、策略模式策略模式:定义了算法族(其实就是has-a 类,这里把继承它的类叫做算法不叫行为),分别封装(比如setter)起来,让他们之间可以相互转换,此模式让算法的变化独立于使用算法的客户。二、设计原则1、找出应用中可能需要变化之处,把它们独立出来,不要和哪些不需要变化的代码混在一起。2、针对接口编程,而不是针对实现编程.比如:FlyBehavior与QuackBehavi...原创 2019-07-24 18:31:13 · 245 阅读 · 0 评论 -
设计模式-迭代器模式
一、迭代器模式提供一种方法顺序访问一个聚合对象(也叫集合对象,比如ArrayList)中的各个元素,而不是暴露其内部的表示。二、设计原则1、一个类应该只有一个引起变化的原因2、类的每个责任都有改变的潜在区域。超过一个责任,意味着超过一个改变的区域。3、这个原则告诉我们尽量让每个类保持单一的责任。三、项目背景煎饼屋餐厅要和晚餐屋餐厅合并,煎饼屋的菜单是通过数组实现的,晚餐...原创 2019-08-01 22:49:20 · 117 阅读 · 0 评论 -
设计模式-模板方法模式
一、模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。二、设计原则别调用我们,我们会调用你,高层组件控制低层组件。三、实例咖啡冲泡法 ...原创 2019-08-01 17:20:30 · 117 阅读 · 0 评论 -
设计模式-适配器与外观模式
一、适配器与外观模式适配器模式:将一个类的接口,转换成客户期待的另一个接口,适配器让原本接口不兼容的类可以合作无间。外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。外观模式白话:开启电视,你要插电源,再按下遥控的“开”键,同时为了你要由音量,也要把音量键“开”按一下,然而外观模式就是定义了一个A接口来封装这些操作的BCD接口,只...原创 2019-08-01 13:35:37 · 295 阅读 · 0 评论 -
设计模式-命令模式
一、命令模式将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作二、设计原则多用组合,少用继承三、代码实现1、Clientpackage com.oyhp.client;import com.oyhp.command.LightOffCommand;import com.oyhp.command.LightOnCo...原创 2019-07-30 18:19:08 · 307 阅读 · 0 评论 -
设计模式--单件模式
一、单件模式确保只有一个类只有一个实例,并提供一个全局访问点。比如线程池,注册表等待应用二、单件模式问题对于多线程使用单件模式必须加上同步方法,缺点是会降低性能public class Singleton{ private static Singleton uniqueInstance; public static synchronized Single...原创 2019-07-30 17:35:55 · 179 阅读 · 0 评论 -
设计模式-工厂方法
一、工厂方法定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。二、设计原则要依赖抽象,不要依赖具体这个原则说明了:不能让高层组件依赖低层组件,而且,不管高层或低层组件,“两者”都应该依赖于抽象PoizzaStore是“高层组件”,披萨实现是“低层组件”,很清楚地,PizzaStore依赖这些具体披萨类Pizza。三、代码实现...原创 2019-07-30 16:49:52 · 131 阅读 · 0 评论 -
设计模式-装饰者
一、装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。简单的来说就是AB两个类都继承了C抽象类,B也是抽象类也是装饰类,A是主题类专门被装饰,然后又有一堆继承了B装饰类的实现类比如(Z、X、D),装饰类通过以C c为属性,通过构造函数来实例化C c。从而达到装饰的目的。本例子以卖咖啡为例子,主题就是咖啡类型,装饰者就是配料。二、设计原则...原创 2019-07-25 15:32:39 · 129 阅读 · 0 评论 -
设计模式-状态模式
一、状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。简单来说,就是用一个“Sate”状态类接口,里面规定了自身不同操作,然后根据自身需要每一个状态都生成一个类。二、项目背景糖果机有四种状态,投钱状态,没有投钱状态,转动曲柄状态,售馨状态。请看原生代码:package com.oyhp.atom;//糖果机public class Gumbal...原创 2019-08-02 15:13:48 · 161 阅读 · 0 评论 -
设计模式-观察者模式
一、观察者模式定义了对象之间的一对多的之间的依赖,这样一来,当一个对象改变状态时,它的所有依赖着都会收到通知并自动更新。一对多体现在被观察者WeatherData中的ArrayList observers和观察者中的subject;二、设计规则为了交互对象之间的松耦合设计而努力。三、代码实现这是一个天气预报系统,当天气改变时,通知所有观察者。1、主题天气主题...原创 2019-07-24 21:07:39 · 106 阅读 · 0 评论 -
设计模式-组合模式
一、组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。组合说白了就像一个二叉树一样,有节点和子元素。二、项目背景餐厅店A,有早餐菜单B,午餐菜单C,晚餐菜单D,而晚餐菜单D又包括甜点菜单E,那么我们要如何循环遍历菜单呢,以及遍历晚餐菜单D中的甜品菜单E,通过迭代器,只是可以平行顺序访问,我们现在需要用到组合模式。三...原创 2019-08-02 11:39:42 · 134 阅读 · 0 评论