![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
littlelittleguai
这个作者很懒,什么都没留下…
展开
-
5.工厂模式
工厂模式:工厂方法把简单工厂的内部逻辑判断移动客户端代码来进行,需要添加功能,本来需要改工厂类,现在变为改客户端/*** 工厂模式:* 关键* 在简单工厂的基础上再抽象一层,工厂也抽象化* AbstractFactory接口:方法* ConcreteFacotry类:实现AbstractFactory接口,返回对应的具体类* @author zbl**/...原创 2018-11-15 14:42:09 · 69 阅读 · 0 评论 -
13.适配器模式
适配器模式:适配器模式使得原本接口不兼容而不能一起工作的类可以一起工作,例子:接口A,实现A1,实现A2,类B,适配器封装类B,且实现接口A并实际调用类B方法/*** 适配器模式:* 关键:* Target(类/接口/抽象类):定义目标方法* Adaptee:要适配的对象* Adapter类:内部封装一个要适配的对象,重写目标方法,方法实则调用要适配对象中的方法...原创 2018-11-29 10:50:31 · 112 阅读 · 0 评论 -
10_1.事件委托
事件委托:把事情交给委托类去办,需要传递要委托的对象,要委托的方法还有及其参数(定义一个类封装好这些属性,并保存在数据结构中,下面就是很好的列子),最后通过反射调用获取实例,并调用其方法import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Arr...原创 2018-11-26 14:33:07 · 100 阅读 · 0 评论 -
14.备忘录模式
/*** 备忘录模式* 关键:* “白箱”:(备忘录是单独一个类)* 发起人Originator类:定义角色状态等多个属性,并定义方法创建备忘录对象,和还原备忘录所记载的状态* 备忘录Memento类:记录Originator类中定义的属性* 负责人Caretaker类:负责保存备忘录对象和还原备忘录对象* “黑箱”:(定义一个备忘录标识接口,备忘录类是发起人...原创 2018-11-29 17:41:44 · 122 阅读 · 0 评论 -
11.抽象工厂
抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类/*** 抽象工厂:* 关键:* IFactory:抽象工厂* ConcreteFactory:具体工厂* @author zbl**/public class AbstractFactoryCustomer {} interface IFactroy{public vo...原创 2018-11-26 17:12:09 · 87 阅读 · 0 评论 -
11_1.反射+抽象工厂
import java.util.ResourceBundle;/*** 反射 + 抽象工厂* 关键:* DataAccess(数据访问类):通过读取配置文件,获取具体工厂类名,* 通过反射获取具体工厂实例,调用具体工厂方法返回相应实例* @author zbl**/public class ReflectCustomer {public static vo...原创 2018-11-29 10:48:29 · 229 阅读 · 0 评论 -
15.组合模式
组合模式:可以使用统一结构一直组合下去总公司---分公司1 ---分公司1财务部 ---分公司1人事部---分公司2 ---分公司2财务部 ---分公司2人事部import java.util.ArrayList;import java.util.List; /*** 组合模式:* 关键:* Component组...原创 2018-12-03 16:00:18 · 79 阅读 · 0 评论 -
16.迭代器模式
import java.util.ArrayList;import java.util.List; /*** 迭代器模式* 关键:* Iterator接口:定义获取开始,下一个,上一个,结尾等等对像方法* ConcreateIterator类:实现Iterator接口* @author zbl**/public class IteratorCustome...原创 2018-12-03 17:07:38 · 80 阅读 · 0 评论 -
17.单例模式
/** * 单例模式: * 关键: * 获取对象只有一个实例,创建单例有两种方法:一种饿汉式(一开始就创建),一种懒汉式(获取对象时创建) * @author zbl * */public class SingleCustomer { public static void main(String[] args) { Single1 single1 = Sing...原创 2018-12-07 10:42:29 · 109 阅读 · 0 评论 -
18.桥接模式
桥接模式:实现系统可能有多角度分类,每一种分类都有可能变化,那么把这多种角度分离出来让他们独立变化,减少他们之间的耦合优先使用合成/聚合复用原则,而不是类继承 (合成/聚合:引用对方的接口,对方传递进来)/*** 桥接模式* 关键:* 例子:手机软件 和 手机厂商,他们的关系是聚合关系,分别是一个抽象类,手机厂商拥有手机软件的引用* @author zbl**/...原创 2018-12-07 15:11:02 · 114 阅读 · 0 评论 -
12.状态模式
状态模式:把相关的行为局部化,将不同的状态行为分割开来,例如根据每小时判断一些情况(Context类),这样可以定义一个接口,并传入这个情况(传入Context类),可以把不同的条件分别实现这个接口,并分别根据这个传入的情况判断(此模式适合判断条件复杂情况)/*** 状态模式* 关键* State接口:定义接口,来封装与Context类相关的行为* Context类(拥有一...原创 2018-11-29 10:48:59 · 154 阅读 · 1 评论 -
9.建造者模式
建造者模式:主要用于创建一些复杂的对象,这些对象内部构建间的构造顺序通常是稳定的,但对象内部的构建通常面临复杂变化import java.util.ArrayList;import java.util.List;/*** 建造者模式:* 关键:* 指挥类(Dircetor):传入建造者类,并定义按顺序执行建造者中的方法* 建造者接口:定义执行的方法* 具体建造者...原创 2018-11-23 11:57:39 · 87 阅读 · 0 评论 -
6.原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 /*** 原型模式* 关键:* (java):实现Cloneable 接口,并重写Clone方法* 浅复制:复制对象,把对象中的数值类型进行复制,复制引用但不复制引用的对象* 深复制:复制对像,把对象中的数值类型进行复制,并且复制引用的对象(需要自己重写clone方法,例子如下)* @au...原创 2018-11-15 17:26:36 · 94 阅读 · 0 评论 -
1.简单工厂模式
简单工厂模式:由工厂创建并返回实例,封装了创建细节 /**关键: * 简单工厂模式 (父类 继承的父类的多个子类 工厂判断返回哪个子类) * 面向对象三大特性 1.封装 2.继承 3.多态【重点】 * 代码复用 * 业务封装 * 松耦合 * @author zbl *///简单计算器 的 简单工厂模式 (面向对象三大特性 1.封装 2.继承 ...原创 2018-11-12 10:57:57 · 61 阅读 · 0 评论 -
2.策略模式
策略模式:一种定义一系列算法的方法,他可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。例子:客户端调用一个新的方法 简单工厂:新建一个子类,并且简单工厂类中添加返回子类方法 策略模式:新建一个子类即可/** * 关键: * context类:维护一个策略对象的引用,通过本类中方法去调用策略对象的方法 * 策...原创 2018-11-12 16:19:19 · 76 阅读 · 0 评论 -
3.装饰器模式
装饰器模式:有效地把类的核心职责和装饰功能区分开/** * 装饰模式 * 关键: * Component接口:定义方法 * ConcreteComponent:接口实现类,实现具体方法 * Decorator:装饰器接口,实现Component接口,定义protected Component component; * 并定义传入component的方法;...原创 2018-11-15 10:05:24 · 117 阅读 · 0 评论 -
2-1 策略与简单工厂结合
/** * 关键: * 策略简单工厂:根据传入的类型,加载相应的策略类 * 策略对象(抽象):定义了算法家族 * 具体实现对象:实现了策略对象 * * 策略简单工厂与简单工厂对比: * 策略简单工厂需要让客户端使用一个类:一个ContextStrategy(管理策略对象的类) * 简单工厂需要让客户端使用两个类: 一个工厂类,一个定义类 * @author zbl * */...原创 2018-11-12 17:18:29 · 88 阅读 · 0 评论 -
4.代理者模式
代理模式:代理模式和装饰器模式结构很像,装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。但当我们使用装饰器模式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器重点:代理模式重在于对方法的...原创 2018-11-15 14:07:36 · 122 阅读 · 0 评论 -
7.模板方法模式
模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使子类可以不改变一个算法的结构即可以从定义该算法的某些特定步骤/*** 模版方法模式:* 关键:* 父类定义做操中的骨架,而将一些步骤延迟到子类中* @author zbl**/public class TemplateCustomer {public static void main...原创 2018-11-16 10:35:45 · 76 阅读 · 0 评论 -
8.外观模式
外观模式:为了系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用例子:大型系统很复杂,难以扩展和维护,可以开发一个外观Facade类,把提供设计粗糙或者高度复杂的遗留代码一个清晰简单的接口/*** 外观模式:* 关键:* 使用一个类包装各种子系统类,使得客户端调用这个类即可完成子系统中的各种协同功能,* 并且不需要知道内部的逻辑...原创 2018-11-16 16:24:05 · 109 阅读 · 1 评论 -
10.观察者模式
观察者模式:定义一种一对多的依赖关系,让多个观察者对象同事监听一个主题对象,当主题对象变化是,会通知所有观察者对象,使他们能更新自己import java.util.ArrayList;import java.util.List;/*** 观察者模式:* 关键:* subject接口: 主题或抽象通知,定义添加方法 删除方法 通知方法* 具体Subject: 实现s...原创 2018-11-23 16:36:18 · 131 阅读 · 0 评论 -
19.命令模式
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作import java.util.ArrayList;import java.util.List; /*** 命令模式:* 关键:* 命令Command接口,定义执行方法* 具体命令Command类,实现接口,并接收Executor,去执行定义方...原创 2018-12-07 16:26:01 · 112 阅读 · 0 评论