
设计模式
文章平均质量分 58
设计模式
sql2008help
这个作者很懒,什么都没留下…
展开
-
设计模式 -(19)模板方法模式(Template Method Pattern)
设计模式 -(19)模板方法模式(Template Method Pattern)前言举一些生活中的例子:去银行办理业务会经历以下步骤:1.取号、2.排队、3.办理具体业务、4.给服务评分,其中在第三步中有的人办理存款,有的人办理取款,有的人办理贷款,在这个步骤中不同的人处理的事情不一样,而除了这个步骤以外其他步骤都一样做菜时一般都经历 去皮, 洗菜,切菜,烹饪等步骤,其中去皮,洗菜,切菜操作大同小异,而烹饪时则需要根据不同菜品调整不同的烹饪方式,如鱼可以清蒸,肉可以小炒,骨头用来炖汤以上举的原创 2022-05-30 16:24:04 · 116 阅读 · 0 评论 -
设计模式 -(13)建造者模式(builder pattern)
设计模式 -(13)建造者模式(builder pattern)在 java 中创建对象一般使用 new Class () ,但在某些情况下类定义者并不想将类的实例化直接暴露给使用者,这种情况下我们可以通过工厂模式实例化对象,不过此篇文章分析的是另一种创建对象和使用对象分离的设计模式,建造者模式如下:Person 类可以理解成产品,而内部类 PersonBuilder 可以理解成生成产品的建造者public class Person { private String name; pr原创 2022-05-25 09:52:29 · 181 阅读 · 0 评论 -
设计模式 -(11)动态代理(Dynamic Proxy)
设计模式 -(11)动态代理(Dynamic Proxy)动态代理是 静态代理 的升级,通过静态代理我们可以对某一个接口的功能进行扩展,而动态代理可以对任意接口进行扩展如何使用JDK动态代理如下是使用JDK动态代理对 Programmer 对象生成代理对象的过程,具体通过 java.lang.reflect.Proxy 类生成代理类package com.example.dp._11dynamicproxy;import com.example.dp._10staticproxy._02.Pr原创 2022-05-20 23:33:58 · 177 阅读 · 0 评论 -
设计模式 -(10)静态代理(static proxy)
设计模式 -(10)静态代理(static proxy)前言如下,下面有一个类 Programmer1 ,其中有一个 action 方法,现在有一个需求,在不改变 Programmer1 代码前提下统计 action 方法花费时间,应该如何做?public class Programmer1 { public void action() { System.out.println("programming..."); } public static void原创 2022-05-19 23:26:38 · 171 阅读 · 0 评论 -
设计模式 -(7)观察者模式/发布订阅模式(observer pattern)
设计模式 -(7)观察者模式/发布订阅模式(observer pattern)前言生活中有一些这样的例子:行人在过斑马线时会观察交通信号灯,当亮红灯时停止等待,当亮绿灯时过马路老师在黑白板书,学生在讲台下做笔记用户订阅某个公众号,当公众号发布消息时订阅的用户可以收到对应消息在上面的例子中,信号灯可以理解为被观察者(observable),行人为观察者(observer),行人观察信号灯状态,状态改变时做出相应的行为反应,同样学生观察老师,当老师板书后,学生做笔记,观察者模式在生活中应用广泛,原创 2022-05-27 22:54:10 · 118 阅读 · 0 评论 -
设计模式 -(6)责任链模式(Chain Of Responsibility pattern)
设计模式 -(6)责任链模式(Chain Of Responsibility pattern)前言之前做过一个这样的需求:在客户办理业务时对客户信息进行校验,如黑名单校验,坏账校验,如果校验失败则不允许客户继续办理业务。针对这种情况,首先想到的便是直接在一个方法中完成所有的校验,比如:public String check(){ if(校验黑名单失败){ return "客户在黑名单中!"; } if(校验坏账失败){ return "客户存在原创 2022-05-27 14:20:31 · 142 阅读 · 0 评论 -
设计模式 -(3)工厂模式(factory pattern)
设计模式 -(3)工厂模式(factory pattern)通常我们需要某个类的对象时,通过 new Class 的方式即可,但是通过工厂模式可以屏蔽创建对象的过程,具体细节交给工厂方法即可。简单工厂模式如下,有一个汽车接口 Car :public interface Car { void printName();}目前有奥迪和宝马两种汽车:public class Audi implements Car{ @Override public void printNa原创 2022-05-24 18:02:58 · 131 阅读 · 0 评论 -
设计模式 -(2)策略模式(strategy pattern)
设计模式 -(2)策略模式(strategy pattern)生活中有这样一些场景,例如在网购时,对于同一件商品,普通买家需要全额购买,而会员则可以打折后购买,同样的事情两者的应对策略却不同,策略可以理解成同一事情在不同场景下的不同应对措施同样,我们在编程过程中也会遇到类似的情况,例如有一个类表示企业员工,其中有工号和年龄两个属性,现在有一个场景需要根据工号id对两个不同的员工对象进行比较排序:public class Employee { private int empNo; p原创 2022-05-22 18:21:28 · 184 阅读 · 0 评论 -
设计模式 -(1)单例模式(singleton pattern)
单例模式可以简单理解为让某个类的某个对象称为系统中的唯一对象饿汉式饿汉式的意思是不管程序是否会用到这个类的对象都会初始化一个此类的对象,如下例,这种模式将类对象作为类的静态成员变量,而类的静态成员变量在类加载的时候就初始化完成了(具体可见:.class 加载过程),这样便可以保证程序在获取类实例时返回的都是同一个实例/** * 饿汉式 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 * 推荐使用 * 唯一缺点,不管是否用到与否,类装载时就完成了实例化 */public class原创 2022-05-21 18:51:02 · 161 阅读 · 0 评论