1.设计模式的起源
package model;
/**
* Created on 2017/4/15.
*/
public class SingletonModel
{
private static SingletonModel singleton;
private SingletonModel()
{
System.out.println("Singleton被构造");
}
public static SingletonModel getInstance()
{
if (singleton== null)
{
// SingletonModel singleton=new SingletonModel(); 这样写是错误的
singleton=new SingletonModel();
}
return singleton;
}
public static void main(String[] args)
{
//获取实例的时候是通过getInstace方法
SingletonModel singleton1=getInstance();
SingletonModel singleton=getInstance();
System.out.println(singleton==singleton1);
}
}
最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。
在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。
尽管亚力山大的著作是针对建筑领域的,但他的观点实际上适用于所有的工程设计领域,其中也包括软件设计领域。“软件设计模式”,这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。目前主要有23种。
2.设计模式的分类
- 创建型模式:单例模式,工厂模式,抽象工厂模式,原型模式
- 结构型模式:代理模式
- 行为型模式:观察者模式,命令模式,解释器模式,中介模式
单例模式,故名思意就是一个实例的意思
- 单例模式
package model; /** * Created by admin on 2017/4/15. */ public class SingletonModel { private static SingletonModel singleton; private SingletonModel() { System.out.println("Singleton被构造"); } public static SingletonModel getInstance() { if (singleton== null) { // SingletonModel singleton=new SingletonModel(); 这样写是错误的 singleton=new SingletonModel(); } return singleton; } public static void main(String[] args) { //获取实例的时候是通过getInstace方法 SingletonModel singleton1=getInstance(); SingletonModel singleton=getInstance(); System.out.println(singleton==singleton1); } }
尽管亚力山大的著作是针对建筑领域的,但他的观点实际上适用于所有的工程设计领域,其中也包括软件设计领域。“软件设计模式”,这个术语是在
1990
年代由
Erich Gamma
等人从建筑设计领域引入到计算机科学中来的。目前主要有
23
种。