design pattern
文章平均质量分 92
设计模式的总结
请叫我大师兄_
请叫我大师兄
展开
-
一个假的单例模式,虽然有双重加锁的代码,但还是假的单例。
单例模式这东西简单,也是平时写代码最常用的一个模式了。虽然你知道单例模式的要点。1.私有(private)静态(static)的单例对象(object)2.构造函数(struct)私有化-----可在构造方法初始化单例对象3.提供对外(public),静态方法获得单例对象你也知道最常见的就是使用双重旋锁来判断对象是否已经初始化了,来控制有且只有一个单利会被初始化。但是,下面这个代码的单例模式有问题,看看能看出来哪有问题不?看不出问题的,还请继续往下看吧。public class Sender原创 2020-08-24 17:15:00 · 809 阅读 · 1 评论 -
Java动态代理模式jdk和cglib的2种实现以及二者的区别(AOP面向切面的前奏)
关于动态代理模式里面有两种实现,一种是jdk实现,一种是cglib来实现。下面来整jdk来实现动态代理的Java实例。jdk动态代理模式里面有个拦截器的概念,在jdk中,只要实现了InvocationHandler这个接口的类就是一个拦截器类。还使用了些反射的相关概念。拦截器的概念不了解没关系,假如写了个请求到action,经过拦截器,然后才会到action。然后继续有之后的操作。原创 2016-11-25 21:40:04 · 8064 阅读 · 5 评论 -
代理模式之静态代理的稍微复杂实现---理解AOP(面向切面编程)---以具体实例来理解AOP概念
Aspect Oriented Programming 面向切面编程。解耦是程序员编码开发过程中一直追求的。AOP也是为了解耦所诞生。具体思想是:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务流。(汉字就是这么绕,一会看一下示意图,就很详细的解释这句话)先假设,要实现如下图的业务需求:查看公司某人的工资,但是又不能直接查看。得经过记录日志,权限校验,安原创 2016-10-10 11:04:25 · 1774 阅读 · 0 评论 -
代理模式之静态代理的简单实现---理解AOP(面向切面编程)的前奏---想要理解AOP,必须先理解一下
Aspect Oriented Programming 面向切面编程。解耦是程序员编码开发过程中一直追求的。AOP也是为了解耦所诞生。具体思想是:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务流。(汉字就是这么绕,一会看代码的注释,就很详细的解释这句话)AOP 主要是利用代理模式的技术来实现的。目标接口:package lxk.aop;/*原创 2016-10-09 16:28:14 · 1405 阅读 · 0 评论 -
单例模式的八种实现--应该是你见过的最全的单例模式实现啦。
一般说到单例模式,老铁们,都是知道老师讲的:饿汉式,饱汉式,双重旋锁式。然后呢,这些个实现,老师讲的不全,马马虎虎,觉得给你说一下,就够用啦。但是,你实际被问到的时候,就觉得,当年老师说的全的,是OK的,其实不是的。老师讲的不全,毕竟老师少有很讲究刨根问底的。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控...原创 2016-03-25 13:56:01 · 10085 阅读 · 6 评论 -
Java反射结合属性文件实现工厂模式
通过属性文件的形式配置所需要的子类首先创建一个fruit.properties的资源文件内容为:apple=Reflect.Appleorange=Reflect.Orange然后编写主类代码package Reflect;import java.io.*;import java.util.*;interface fruit { void eat();原创 2016-08-20 00:47:42 · 1912 阅读 · 0 评论 -
利用反射机制实现工厂模式
package Reflect;interface fruit{ public abstract void eat();}class Apple implements fruit{ public void eat(){ System.out.println("Apple"); }}class Orange implements fruit{原创 2016-08-20 00:43:10 · 5930 阅读 · 6 评论 -
结合Java实例代码来理解 AOP--面向切面编程 中的各个术语
因为这个AOP--面向切面编程是基于动态代理模式的,所以,要想搞清楚这个AOP,就必须得先了解下,什么是代理模式,什么又是动态代理模式。动态代理模式的2种实现方式。现在假设,你已经可以看得懂动态代理模式的Java代码例子。把aop概念里面的专业术语对应到实际代码中去。下面是cglib实现的动态代理模式的Java代码。package com.lxk.designPattern.proxy原创 2016-11-26 15:03:33 · 7500 阅读 · 1 评论 -
详细讲解装饰者模式和继承之间的关系和优劣(讲道理这事儿,不怕过 就怕不够)
在上一个装饰者模式简单实例中,可能有的朋友会觉得:使用继承不也是可以实现的嘛,干嘛这么麻烦。具体如下:新建一个类,继承PersonBefore,然后,在子类里面调用super.eat(),也是可以直接调用父类的方法,也没有修改父类内容实现代码。那么,这就来说说继承和装饰者模式之间的区别,为什么选择装饰者模式,而不使用继承来实现这个需求。也就是为什么装饰者设计模式会比继承好。先来原创 2016-11-24 18:12:20 · 7436 阅读 · 6 评论 -
工厂模式的代码实现,简单易懂。
工厂模式的代码实现,简单易懂。interface fruit { public abstract void eat();}class Apple implements fruit { public void eat() { System.out.println("Apple"); }}class Orange implements fruit原创 2016-08-20 00:39:54 · 12300 阅读 · 2 评论 -
简单Java代码实例助你通俗易懂的理解什么是装饰(者)设计模式 (Decorator)
首先抛开到处都有的文字概念。来看下面的例子。现在以:人吃饭。这个需求为例。来讲解这个设计模式。1.0:想当年,人们都比较朴实。吃饭就是简简单单的吃饭。那么PersonBefore类里面一个简单的方法chifan();2.0:现如今,人们生活水平高了。吃饭的花样也多了,简单的吃饭已经不能满足需求。那么怎么修改原来的代码才合适呢。总不能分分钟推到重构吧。先看下面原创 2016-11-24 15:34:06 · 2623 阅读 · 0 评论 -
工厂模式的简单实现和快速理解--------(java复习)
一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但转载 2016-03-25 16:31:55 · 1369 阅读 · 0 评论