设计模式
llllllxj
业精于勤,荒于嬉;行成于思,毁于随
展开
-
单例模式
单利模式就是对象只创建一次,每次获取的是同一个对象。单利模式有两种实现方式。懒汉式在第一次拿对象的时候会创建一个对象,不过这时候可能有多个线程同时进来。考虑线程安全,所以在方法上上加上关键字synchronizedpackage sdibt.lxj.singlepattern; /** * 懒汉式单例模式 * @author lxj * */ public class LazySingle...原创 2018-06-16 10:36:28 · 133 阅读 · 0 评论 -
工厂模式
工厂模式的应用场景:1.创建复杂对象,这个对象需要很多参数,大多数参数是固定的2.构建同产品的不同对象简单工厂模式:定义季节接口,春夏秋冬四个季节实现这个接口,并对自己的季节进行描述package sdibt.lxj.entity; public interface Season { public void desc(); }春天package sdibt.lxj.entity; public...原创 2018-06-16 17:28:26 · 181 阅读 · 0 评论 -
代理模式
静态代理由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。所谓代理就是在方法前后加上执行代码,但不更改被代理的类本身的方法。举个栗子比如存钱这个操作,我们可以去银行人工往银行卡里存钱,也可以使用支付宝往银行卡里存钱。如果我们去银行人工存钱的话,只需要提供银行卡就可以,如果使用支付宝存钱的话,除了要提供银行...原创 2018-06-17 19:20:15 · 163 阅读 · 0 评论 -
从兄弟到父子:CGLIB动态代理的玩法
前言:本文为《Java帝国之动态代理》的姊妹篇, 讲述动态代理的另外一种实现即CGLib的设计过程。 当IO大臣绞尽脑汁地在府中设计Java动态代理的时候,他并不知道,在帝国的一个小小的部落,一个年轻的小伙子正在为同样的问题而苦恼。 师傅刚刚给小伙子下达了任务:在运行时对一个类进行扩展, 例如有个类叫HelloWorld,要在运行时给他加点日志输出的代码。 师傅特别告诉年轻人:“大胖, ...转载 2018-10-15 21:59:27 · 573 阅读 · 0 评论 -
适配器模式
假设系统存在一个现有的类UserInfo: class UserInfo { private Map<String, String> userBaseInfo; public Map getUserBaseInfo() { return userBaseInfo; } public void setUserBaseInfo(Ma...转载 2018-10-25 20:55:41 · 120 阅读 · 0 评论