
模式
文章平均质量分 52
xuyin1204
这个作者很懒,什么都没留下…
展开
-
静态代理和动态代理模式
目录一、静态代理二、动态代理三、角色一、静态代理二、动态代理 动态代理中,代理类并不是在Java代码中实现,而是在运行时期生成,相比静态代理,动态代理可用很方便的对委托类的方法进行统一处理。三、角色Subject抽象主题角色,是一个接口,该接口是对象和它的代理公用的接口。RealSubject真实主题角色,是实现抽象主题接口的类Proxy 代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。代理对象提供与真实对象相同的接口,以便在任何时刻都能代原创 2021-07-13 17:05:17 · 110 阅读 · 0 评论 -
六大设计原则
目录一、单一职责原则1. 定义2. 特点3. 反面实例4. 重点5. 适用范围6、重点二、里氏替换原则1、定义2、需求3、优缺点4. 重点三、依赖倒置原则1、定义2、问题由来3、依赖倒置好处4、依赖倒置注入实现5、依赖倒置本质6、注意点7、使用场景四、接口隔离原则1、定义2、单一职责与接口隔离区别3、特点4、原子接口划分原则五、迪米特法则1、定义2、生活示例看代码3、优缺点六、开闭原则1、定义2、优点总结:一、单一职责原则1. 定义 单一职责原则(SRP:Single responsibility原创 2021-04-22 16:44:59 · 373 阅读 · 0 评论 -
迭代器模式
定义: 提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。优缺点优点 简化了遍历方式,对于对象集合的遍历,还是比较麻烦的,对于数组或者有序列表,我们尚可以通过游标来取得,但用户需要在对集合了解很清楚的前提下,自行遍历对象,但是对于hash表来说,用户遍历起来就比较麻烦了。而引入了迭代器方法后,用户用起来就简单的多了。 可以提供多种遍历方式,比如说对有序列表,我们可以根据需要提供正序遍历,倒序遍历两种迭代器,用户用起来只需要得到我们实现好的迭代器,就可以方便的对集合进原创 2021-04-21 17:15:44 · 67 阅读 · 0 评论 -
策略模式
策略模式定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式让算法独立于使它的客户独立而变化。角色环境(Context)角色:持有一个Strategy的引用抽象策略(Strategy)角色 :这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。需求 假设现在要一个上商店个搞活动。 对所有的高级会员打20%的促销折扣;对中级会员打10原创 2021-04-20 17:25:45 · 77 阅读 · 0 评论 -
状态模式
定义 当一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。又称状态对象模式,状态模式是对象的行为模式。角色环境(Context)角色上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个定义了对象的当前状态抽象状态(State)角色定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。具体状态(ConcreteState)角色每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。使用场景原创 2021-04-19 13:54:02 · 72 阅读 · 0 评论 -
观察者模式
定义: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。角色抽象主题(Subject)角色抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,抽象主题角色又叫做抽象被观察者(Observable)角色。具体主题(ConcreteSubject)角色将有关状态存入具体观原创 2021-04-14 15:03:38 · 71 阅读 · 0 评论 -
模板模式
定义: 定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变算法的结构即可重复定义算法的某些特点步骤。角色:AbstractClass抽象类,定义算法结构,还可以提供通用实现。ConcreteClass具体实现类,选择性的重定义算法中某些特定步骤。解决的问题:一些方法通用,却在每一个子类都重新写了这一方法。优缺点:优点:封装不变部分,扩展可变部分。提取公共代码,便于维护。行为由父类控制,子类实现。缺点: 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得原创 2021-04-14 14:05:57 · 77 阅读 · 0 评论 -
解释器模式
介绍: 解释器是一种用的比较少的行为模式,其提供了一种解释语言的语法,或者表达式的方式。该模式定义了一个表达式的接口。运用:手机号码的验证移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188联通:130、131、132、152、155、156、185、186电信:133、153、180、189、(1349卫通)正则表达式"((13[0-9])|(15[4,\D])|(18[0,5-9]))\d{8}$"x原创 2021-04-14 10:58:12 · 73 阅读 · 0 评论 -
命令模式
定义: 将请求封装成一个对象,从而让用户使用不同的请求把客户端参数化。请求排队或者记录请求日志,以及支持可撤销的操作。模式的使用场景系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。系统需要在不同的时间指定请求、将请求排队和执行请求。系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。系统需要将一组操作组合在一起。角色:Command命令角色 : 定义命令的接口,声明具体命令类需要执行的方法。这是一个抽象角色。ConcreteCommand具体命令角色: 命原创 2021-04-13 10:59:38 · 83 阅读 · 0 评论 -
责任链模式
AbstractRequest.javapublic abstract class AbstractRequest { private Object object; public AbstractRequest(Object object) { this.object = object; } /** * 获取请求级别 */ public abstract int getRequestLevel();}Request1.javapublic class原创 2021-04-10 22:24:21 · 88 阅读 · 0 评论 -
建造者模式
需求:用户需要建房子流程:用户(建房子)—> 设计者(设计)—> 工人(建造房子)原始代码:Room.javapackage com.test.lib;/** * 建造的房子 */public class Room { private String window; private String floor; public String getWindow() { return window; } public voi原创 2021-04-09 16:10:47 · 96 阅读 · 0 评论