
设计模式
ldh_lyf
这个作者很懒,什么都没留下…
展开
-
Javassist实现动态代理
添加maven依赖 <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.27.0-GA</version> </dependency> 代理接口 /** * 可以唱歌的 */ public interface Singable { /** * 唱歌原创 2021-02-28 18:43:06 · 1112 阅读 · 1 评论 -
设计模式---------单例模式
1.饿汉式:在类初始化时创建 public class SingletonDemo { private SingletonDemo() { } private static SingletonDemo instance = new SingletonDemo(); public static SingletonDemo getInstance(){ return insta...原创 2019-06-02 09:32:17 · 103 阅读 · 1 评论 -
模板模式(Template Pattern)
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 介绍 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却在每一个子类都重新写了这一方法...原创 2018-09-09 09:10:22 · 407 阅读 · 0 评论 -
策略模式(Strategy Pattern)
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 介绍 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 i...原创 2018-09-09 09:04:46 · 147 阅读 · 0 评论 -
观察者设计模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 何时使用:一个对象(目...原创 2018-08-06 15:54:29 · 153 阅读 · 0 评论 -
写出优美Java代码注意事项
(1)尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final...原创 2018-07-26 18:22:49 · 1780 阅读 · 2 评论 -
适配器模式
适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这正像是本模式所做的事情。 适配器模式的结构 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 ...原创 2018-02-25 15:19:18 · 128 阅读 · 0 评论 -
动态代理(无接口)
第一步 创建类,实现接口 MethodInterceptor第二步实现接口里面的方法intercept,在这个方法里面写增强的逻辑 第三步在类里面,创建方法,让这个方法返回子类代理对象publicclass CGLib { publicstaticvoid main(String[] args) { MyUserDao myUserDao = new MyUserDao(); ...原创 2018-02-25 15:17:30 · 495 阅读 · 0 评论 -
动态代理
public class ProxyDemo { public static void main(String[] args) { /** * 动态代理:在程序运行时 动态创建一个类 此类就是代理类 * 你 ==>> 代理商(增强) ==> 厂商 * 目标类:厂商 * ...原创 2018-02-25 14:51:34 · 245 阅读 · 0 评论 -
装饰者设计模式
方法增强 继承 需要明确父类 实现 需要明确父接口(不明确实现类的父接口) 动态代理 proxy 装饰者设计模式什么是设计模式:一段固定的代码 解决固定的问题 A a = C.... B b = new B(...原创 2018-02-25 14:29:16 · 152 阅读 · 0 评论