java的设计模式

1: 工厂模式(Spring就是基于工厂模式)
   
   
工厂模式:http://blog.csdn.net/jason0539/article/details/23020989
2: 抽象工厂模式
   总结一下,抽象工厂模式特别适合下面的产品结构:
   产品分为几个系列,在每个系列中,产品的布局都是类似的,在一个系列中某个位置的产品,在另一个系列中一定有一个对应的产品。这样的产品结构是存在的,这几个系列中同一位置的产品可能是互斥的,它们是针对不同客户的解决方案,每个客户都只选择其一。
   
   
工厂方法模式:针对的是 一个产品等级结构。
 
抽象工厂模式:针对 多个产品等级结构。

3 :单例模式
   
   
单例模式的定义
 
被单例的对象只能有一个实例存在。单例模式的实现方式是,一个类能返回对象的一个引用(永远是同一个)和一个获得该唯一实例的方法(必须是静态方法)。
饿汉模式
   
   
// 饿汉模式
public class Wife {
 
// 一开始就新建一个实例
private static final Wife wife = new Wife();
 
// 默认构造方法
private Wife() {}
 
// 获得实例的方法
public static Wife getWife() {
return wife;
}
}
懒汉模式

   
   
//懒汉模式
public class Wife {
 
//一开始没有新建实例
private static Wife wife;
 
private Wife() { }
 
// 需要时再新建
public static Wife getWife() {
if (wife == null) {
wife = new Wife();
}
return wife;
}
}
安全的懒汉模式

   
   
// 懒汉模式(线程安全)添加线程同步( synchronized)保证同一时刻最多只有一个线程运行,避免了多线程带来的不安全因素。
public class Wife {
private static Wife wife;
 
private Wife() { }
 
// 添加了 synchronized 关键字
public static synchronized Wife getWife() {
if (wife == null) {
wife = new Wife();
}
return wife;
}
}
添加关键字 volatile,防止编译器自动优化代码
   
   
// 双重检验锁
public class Wife {
private volatile static Wife wife;
 
private Wife() { }
 
public static Wife getWife() {
if (wife == null) {
synchronized(Wife.class) {
if (wife == null) {
wife = new Wife();
}
}
}
 
return wife;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值