浅谈设计模式
2017-09-26 17:56
169 查看
单例
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。
通过单例模式可以保证系统中一个类只有一个实例
单例模式的要点有三个:
㈠单例类只能有一个实例;
㈡单例类必须自己创建自己的唯一实例;
㈢单例类必须给所有其他对象提供这一实例。
对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;如在Windows中就只能打开一个任务管理器。
从具体实现角度来说,就是以下三点:
㈠单例模式的类只提供私有的构造函数
㈡单例类定义中含有一个该类的静态私有对象
㈢该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
单例模式的实现形式:
①懒汉式(线程不安全),是常用的形式
//懒汉式单例:在第一次调用的时候实例化自己
public class Singleton {
//1、私有的构造函数
private Singleton(){};
//2、该类的静态私有对象
private static Singleton single=null;
//3、公共静态方法,供访问
public static Singleton getInstance(){
if(single==null){
single=new Singleton();
}
return single;
}
}
②饿汉式(线程安全)
//饿汉式单例,在类初始化时,已经自行实例化
public class Singleton1 {
//1、私有构造函数
private Singleton1(){};
//2、通过静态最终变量实例化
private static final Singleton1 single=new Singleton1();
//3、公共静态方法
public static Singleton1 getInstance(){
return single;
}
}
工厂模式
⑴还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用。
⑵简单工厂模式(掌握):后来出现工业革命。用户不用去创建宝马车。因为客户有一个工厂来帮他创建宝马.想要什么车,这个工厂就可以建。比如想要320i系列车。工厂就创建这个系列的车。即工厂可以创建产品。
⑶工厂方法模式时代(了解):为了满足客户,宝马车系列越来越多,如320i,523i,30li等系列一个工厂无法创建所有的宝马系列。于是由单独分出来多个具体的工厂。每个具体工厂创建一种系列。即具体工厂类只能创建一个具体产品。但是宝马工厂还是个抽象。你需要指定某个具体的工厂才能生产车出来。
⑷抽象工厂模式时代(了解):随着客户的要求越来越高,宝马车必须配置空调。于是这个工厂开始生产宝马车和需要的空调。
四、静态代理
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个对象不适合或者不能直接引用另一个对象,
而代理对象可以在客户端和目标对象之间起到中介的作用。
组成:
①抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
②真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
③代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。
通过单例模式可以保证系统中一个类只有一个实例
单例模式的要点有三个:
㈠单例类只能有一个实例;
㈡单例类必须自己创建自己的唯一实例;
㈢单例类必须给所有其他对象提供这一实例。
对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;如在Windows中就只能打开一个任务管理器。
从具体实现角度来说,就是以下三点:
㈠单例模式的类只提供私有的构造函数
㈡单例类定义中含有一个该类的静态私有对象
㈢该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
单例模式的实现形式:
①懒汉式(线程不安全),是常用的形式
//懒汉式单例:在第一次调用的时候实例化自己
public class Singleton {
//1、私有的构造函数
private Singleton(){};
//2、该类的静态私有对象
private static Singleton single=null;
//3、公共静态方法,供访问
public static Singleton getInstance(){
if(single==null){
single=new Singleton();
}
return single;
}
}
②饿汉式(线程安全)
//饿汉式单例,在类初始化时,已经自行实例化
public class Singleton1 {
//1、私有构造函数
private Singleton1(){};
//2、通过静态最终变量实例化
private static final Singleton1 single=new Singleton1();
//3、公共静态方法
public static Singleton1 getInstance(){
return single;
}
}
工厂模式
⑴还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用。
⑵简单工厂模式(掌握):后来出现工业革命。用户不用去创建宝马车。因为客户有一个工厂来帮他创建宝马.想要什么车,这个工厂就可以建。比如想要320i系列车。工厂就创建这个系列的车。即工厂可以创建产品。
⑶工厂方法模式时代(了解):为了满足客户,宝马车系列越来越多,如320i,523i,30li等系列一个工厂无法创建所有的宝马系列。于是由单独分出来多个具体的工厂。每个具体工厂创建一种系列。即具体工厂类只能创建一个具体产品。但是宝马工厂还是个抽象。你需要指定某个具体的工厂才能生产车出来。
⑷抽象工厂模式时代(了解):随着客户的要求越来越高,宝马车必须配置空调。于是这个工厂开始生产宝马车和需要的空调。
四、静态代理
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个对象不适合或者不能直接引用另一个对象,
而代理对象可以在客户端和目标对象之间起到中介的作用。
组成:
①抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
②真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
③代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
相关文章推荐
- 浅谈设计模式之七——Composite模式
- 浅谈设计模式——单例模式
- MVVM设计模式时什么?浅谈MVVM设计模式
- 浅谈springMVC中的设计模式(4)——建造者模式
- 浅谈设计模式之单例模式
- 浅谈观察者设计模式
- 设计模式浅谈--单例模式
- Decorator设计模式浅谈
- 浅谈JAVA设计模式之——中介者模式(Mediator)
- 浅谈 java 设计模式--原始模型模式(Prototype pattern)
- 浅谈 java 设计模式--工厂方法模式(Factory Method pattern)
- [转]浅谈MVP与Model-View-ViewModel(MVVM)设计模式
- 【Java基础】浅谈常见设计模式
- 浅谈设计模式
- 设计模式之UML类图关系浅谈。
- 浅谈设计模式的学习(上)
- 浅谈java的23种设计模式
- 浅谈MVP与Model-View-ViewModel(MVVM)设计模式
- Android设计模式之浅谈MVP
- 浅谈java 23种设计模式之策略模式(Strategy Pattern)