首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

GoF设计方式详解

2012-10-18 
GoF设计模式详解可以这么说:GoF设计模式是程序员真正掌握面向对象核心思想的必修课。虽然你可能已经通过了S

GoF设计模式详解
可以这么说:GoF设计模式是程序员真正掌握面向对象核心思想的必修课。虽然你可能已经通过了SUN的很多令人炫目的技术认证,但是如果你没有学习掌握GoF设计模式,只能说明你还是一个技工。

这里只是想用简单的办法来解释常用的设计模式。

通常将设计模式分为 创建模式,结构模式,行为模式3种类型。
创建模式
一些系统在创建对象的时候需要动态的决定怎样创建对象、创建哪些对象、以及如何组合,表示这些对象。创建模式描述了怎样构造和封装这些动态的决定。

创建模式又分类的创建模式和对象的创建模式。

类的创建模式:类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并隐藏了这些类的实例是如何被创建的和放在一起的。

对象的创建模式:对象的创建模式则把对象的创建过程动态的委派给另一个对象,从而动态的决定客户端将得到哪些具体类的实例,以及这些类实例如何被创建和组合在一起。

结构模式


行为模式



Singleton Pattern

1. 饿汉式单例类
public class Singleton {

  private Singleton(){}

  //在自己内部定义自己一个实例,是不是很奇怪?
  //注意这是private 只供内部调用

  private static Singleton instance = new Singleton();

  //这里提供了一个供外部访问本class的静态方法,可以直接访问  
  public static Singleton getInstance() {
    return instance;   
   }
}

2. 懒汉式单例类

public class Singleton {

  private static Singleton instance = null;

  public static synchronized Singleton getInstance() {

  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次   
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
  return instance;   }

}


第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。


注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全。


Factory Method Pattern

Bridge Pattern

Command Pattern

热点排行