设计模式
Tket
这个作者很懒,什么都没留下…
展开
-
模板模式
模板模式: 有多个子类共有的方法,且逻辑相同时,可以考虑模板模式 并且重要的、复杂的方法,可以考虑作为模板方法 为防止恶意操作,一般模板方法都加上 final 关键词 1.定义抽象类,内有抽象通用方法,和final模板方法, final模板方法内可以是抽象通用方法2.定义具体类继承抽象类,重写抽象方法3.客户端通过抽象类,使用其模板方法1.定义抽象类,内有抽象通用方法,和fin...原创 2019-07-23 00:53:27 · 81 阅读 · 0 评论 -
外观模式
外观模式: 定义系统的入口,仅需要一个引路人 1.定义抽象接口和组件通用方法2.定义具体类实现抽象接口3.定义外观类,内部有所有具体类成员变量, 定义方法,用于使用各个具体类的相关方法4.客户端通过实例化外观类,对整个系统进行同一化操作1.定义抽象接口和组件通用方法 public interface Component { public abstract void start...原创 2019-07-20 00:06:51 · 93 阅读 · 0 评论 -
装饰器模式
装饰器 使用通用接口,进行子类拓展1.定义抽象接口,定义拓展和原本类的通用方法2.定义具体原本类继承抽象接口,并重写抽象方法3.定义抽象装饰器类继承抽象接口,内部设接口成员变量并在构造器中进行初始化原本类,并定义拓展类的通用抽象方法(可以没有)4.定义具体装饰器类继承抽象父类,重写构造器和抽象方法5.客户端使用抽象接口,传入具体原本类,在装饰器类下调用函数1.定义抽象接口,定义拓...原创 2019-07-19 23:42:32 · 69 阅读 · 0 评论 -
组合模式
组合模式: 用于树式结构,即对象包含对象的问题1.定义抽象类,设置通用方法,都要重写的设为抽象 只有一部分子类要重写的,设为具体方法2.各自定义具体类继承抽象类,根据需要重写方法3.客户端通过对抽象类的操作进而完成树形结构1.定义抽象类,设置通用方法,都要重写的设为抽象 只有一部分子类要重写的,设为具体方法 abstract class Node{ protected Str...原创 2019-07-19 22:34:36 · 99 阅读 · 0 评论 -
过滤器模式
过滤器模式: 用于过滤筛选1.定义常规类2.定义抽象接口类,用于过滤的函数接收List,并返回List3.定义具体过滤类实现抽象接口,重写过滤用的函数4.定义用于操作的具体过滤类实现抽象接口,add,or,not5.客户端使用抽象接口类,进行具体的过滤操作1.定义常规类 class Dog{ private String born; public String getSe...原创 2019-07-19 20:26:49 · 93 阅读 · 0 评论 -
桥接模式
桥接模式: 实现多角度分类,分类与组合1.定义角度抽象接口,定义该角度下的通用函数2.定义具体类继承接口,并重写函数3.定义完整抽象类,内部具备抽象接口成员变量, 用于使用角度下的分类,并定义出功能完整的抽象函数4.定义具体类继承完整抽象类,通过构造器角度联合,并重写抽象函数 5.客户端使用通过具体类的构造器来实现功能1.定义角度抽象接口,定义该角度下的通用函数 public ...原创 2019-07-19 17:14:46 · 75 阅读 · 0 评论 -
适配器模式
适配器: 用于转换,使原来不兼容的接口可以兼容1.定义普通接口,包含通用的方法2.定义用于实现特殊方法的接口,可以有多个特殊方法3.定义具体类仅具体实现特定的特殊方法,其余的特殊方法仅仅是重写为空4.定义适配器类继承普通接口,内部包含特殊接口作为成员变量, 并重写接口方法,实际上仅使用特殊方法5.定义完整类继承普通接口,内部包含适配器作为成员变量, 并为重写接口方法,普通方法在其中...原创 2019-07-19 01:10:12 · 86 阅读 · 0 评论 -
建造者方法
建造者模式 用于组合类,不再如同抽象工厂的独立产品1.定义产品类接口,该接口定义了产品的通用方法,方法可以有其他接口的返回类型2.如果产品类接口有其他接口返回类型的通用方法,则定义其他接口以及实现接口的具体类3.定义抽象类继承产品类接口,重写可以确认的功能,其余不动,可以有多种不同的抽象产品类4.定义具体产品类,继承抽象产品类,并实现剩余的抽象函数5.定义一个Suits套装类,内部设...原创 2019-07-18 22:23:59 · 88 阅读 · 0 评论 -
单例模式
单例模式: 1.饥饿无锁式线程安全型 2.懒惰双重检测带锁线程安全型1.饥饿无锁式线程安全型// ∵依赖于Java对静态成员的初始化,基于 classloader 机制避免了多线程的同步问题 public class OnlyOne { private static OnlyOne instance = new OnlyOne(); private OnlyOne() {};...原创 2019-07-18 18:26:33 · 75 阅读 · 0 评论 -
抽象工厂方法
抽象工厂方法:使用于生产多个独立产品1.定义产品类一接口,定义此产品类通用方法2.定义具体类实现接口3.定义产品类二接口,定义此产品类通用方法4.定义具体类实现接口5.定义抽象工厂类,定义所有子类工厂需要的方法(全设置为抽象方法)6.实现子类工厂,重写父类抽象工厂类的所有方法(接收字符串,返回指定的具体类 if if if…)7.定义工厂生成器类,定义方法(接收字符串,返回指定的具体...原创 2019-07-18 15:12:28 · 258 阅读 · 0 评论 -
工厂方法
工厂方法:1.定义出抽象的接口,定义通用方法名2.定义具体类继承抽象接口,实现各自的方法3.定义工厂类,定义方法(接收字符串,返回指定的具体类 if if if…)4.客户端调用工厂类实例函数,进而使用接口来调用函数1.接口public interface Shape { public abstract void tell();}2.具体类class Rectangle i...原创 2019-07-18 11:03:43 · 60 阅读 · 0 评论 -
享元模式
享元模式 适用于需要缓冲池的场景 1.定义抽象接口2.定义具体类,设置出唯一的标识符,并用于构造器 3.定义工厂类,有hashMap<id,接口>成员变量, 并设置get接口Name()方法4.客户端通过对工厂类的操作达成缓冲池的作用1.定义抽象接口 public interface Machine { public abstract void tell() ;...原创 2019-07-20 12:25:19 · 89 阅读 · 0 评论 -
代理模式
代理模式: 实现与被代理类组合,为了加以控制,区别于装饰器的增加功能1.定义抽象接口2.定义具体类实现抽象接口3.定义代理类实现抽象接口,内部有具体类成员变量4.客户端通过对代理类的访问,实现对具体类的真实操作1.定义抽象接口 public interface Picture { public abstract void display(); }2.定义具体类实现抽象接口...原创 2019-07-20 15:35:05 · 71 阅读 · 0 评论 -
MVC模式
MVC模式: model,view,controller model被隐藏,显示的是view,而具体操作是通过controller进行的1.定义model产品类2.定义view视图类,仅作为显示方法3.定义controller控制器类,内有model,view成员变量, 在执行操作时,使用的是成员变量具备的方法(显示或是对model修改)4.客户端通过对controller进行实例化...原创 2019-07-23 00:31:42 · 79 阅读 · 0 评论 -
策略模式
策略模式在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。一个系统有许多许多类,而区分它们的只是他们直接的行为,可以使用策略模式,主要解决在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 将这些算法封装成一个一个的类,任意地替换...原创 2019-07-22 19:43:34 · 119 阅读 · 0 评论 -
空对象模式
空对象模式 适用于对象为空时的仍要面对的统一化管理。在空对象模式中, 一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值, 而是反应一个不做任何动作的关系。 这样的 Null 对象也可以在数据不可用的时候提供默认的行为 1.定义抽象产品类,设置通用方法2.定义具体产品类和空产品类都继承产品类,重写抽象方法3.定义工厂类,内部定义获取产品类的方法4.客户端通过工厂...原创 2019-07-21 23:18:27 · 79 阅读 · 0 评论 -
状态模式
状态模式: 在行为受状态约束的时候使用状态模式,而且状态不超过 5 个1.定义状态抽象接口,有抽象通用执行函数。2.定义产品类,内有状态类成员变量和获取设置状态类的方法3.定义具体状态类实现抽象接口,重写执行函数, 接收产品类实例参数,设置其状态信息,执行其特定方法4.客户端通过产品类和状态类,实现特定状态下的产品方法1.定义状态抽象接口,有抽象通用执行函数 public int...原创 2019-07-21 22:07:36 · 69 阅读 · 0 评论 -
观察者模式
观察者模式 目标对象的状态发生改变,所有观察者对象都将得到广播通知1.定义抽象观察者类,内有产品类成员变量和更新方法2.定义产品类,内有抽象观察类列表成员变量, 和(添加入观察者列表)函数, 和重设产品类信息(内将列表中元素都执行更新方法)函数3.定义具体观察类继承抽象观察者类,重写抽象方法4.客户端通过产品类的添加观察者类方法,实现广播通知1.定义抽象观察者类,内有产品类成员...原创 2019-07-21 18:36:55 · 105 阅读 · 0 评论 -
备忘录模式
备忘录模式 可恢复到原先的状态1.定义产品类2.定义存储状态类,内有产品类的信息成员变量 和(存储状态)函数和(根据成员返回产品类对象)函数3.定义帮助类,内有存储状态对象列表成员变量 和(添加存储状态)函数和(获取列表最后一个状态)函数4.定义操作类,内有帮助类和产品类成员变量 和(存储产品信息到帮助类中)函数和(从帮助类还原产品信息)函数5.客户端通过操作类,实现回滚状态...原创 2019-07-21 17:22:42 · 86 阅读 · 0 评论 -
中介模式
中介模式 降低多个对象和类之间的通信复杂性,通信封装到一个类中单独处理1.定义产品类2.定义通信方类,内部有产品成员对象(s)和通信行为方法3.定义中介方类,内部有通信方(s)和用于通信方通信的方法4.客户端通过中介方类,对通信方的通信实现具体管理1.定义产品类 class Product{ public String productName; public float s...原创 2019-07-21 15:21:32 · 160 阅读 · 0 评论 -
迭代器模式
迭代器模式 遍历一个聚合对象1.定义迭代器抽象接口,有hasNext和next方法2.定义聚合抽象接口,有getIterator方法3.定义具体迭代器类实现迭代器接口, 设置index成员变量,用于重写接口方法4.定义具体聚合类实现聚合接口,数组成员变量用于迭代, 并getIterator方法返回上面指定的具体迭代器类 5.客户端通过使用聚合类和迭代器类,使用循环体迭代1.定义...原创 2019-07-21 00:57:18 · 140 阅读 · 0 评论 -
命令模式
命令模式; 认为是命令的地方都可以使用命令模式1.定义命令的抽象接口2.定义命令的操作宾语类,(可以有多个) 并在内定义基于该宾语类的操作实例方法3.定义具体操作命令类实现抽象接口,命令类个数同上面的操作宾语类的操作实例方法个数一致内部有操作宾语类成员变量,用于使用宾语类的操作实例方法4.定义调用类,内部有命令list成员变量, 定义add命令方法和executeAll命令方法...原创 2019-07-20 23:23:38 · 87 阅读 · 0 评论 -
责任链模式
责任链模式 利用链式处理消息1.定义抽象类,有级别,抽象类成员变量,定义通用(设置下级) 和(传递消息)的具体方法以及抽象的处理消息方法 2.定义具体类继承抽象类,设置各自的级别大小,重写处理方法3.客户端通过具体类,从级别由低到高,通过父类的设置下级的方法 形成链式处理,使用起始类实例来传递消息1.定义抽象类,有级别,抽象类成员变量,定义通用(设置下级) 和(传递消息)的具体方...原创 2019-07-20 18:29:01 · 97 阅读 · 0 评论 -
MVC模式.md
MVC模式:model,view,controllermodel被隐藏,显示的是view,而具体操作是通过controller进行的1.定义model产品类2.定义view视图类,仅作为显示方法3.定义controller控制器类,内有model,view成员变量, 在执行操作时,使用的是成员变量具备的方法(显示或是对model修改)4.客户端通过对controller进行实例化时...原创 2019-08-28 11:12:10 · 123 阅读 · 0 评论