java常用设计模式
2015-07-25 10:18
447 查看
java常用的设计模式
1,单例模式。
a,有些对象我们只需要一个:线程池、缓存、硬件设备等,如果多个实例会有造成冲突,结果的不一致性问题
b,可以使用静态变量方式来实现或者全局变量。
c,确保一个类最多只有一个实例,并且保证有一个全局的访问点.
d,声明一个私有的构造函数,提供一个静态的方法来创建私有对象.
e,单例模式在多线程中的优化.
<1>getInstance中添加同步锁,因为同步锁很消耗资源,在多次调用getInstace中,不建议使用
<2>使用急切创建实例解决方案,直接在static中new出来.
<3>双重检查加锁解决方案.
public volatile static ChocolateFactory instance=null;
public static ChocolateFactory getInstance(){
if(instance==null){
synchroized(ChocolateFactory.class){
if(instance==null){
instance=new ChocolateFactory();
}
}
}
return instance;
}
2,装饰者模式.
a,动态的将新功能附加到对象上,在对象功能扩展方面,它比继承更有弹性.
b,java的io结构:inputstream
3,观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为subject,依赖的对象为observer,subject通知observer变化.
a,被观察者(subject)与观察者(observer);
b,被观察者登记注册、移除和通知,观察者接收输入.
3,外观模式.
a,提供一个统一的接口,来访问子系统中一群功能相关接口,它定义了一个高层接口,让子系统更容易使用.
b,最小知识原则:尽量减少对象之前的交互,只留几个密友,项目设计中就是不要让太多的类耦合在一起.
c,对象方法调用范围:对象本身,作为参数传进来的对象,此方法创建和实例化的对象,对象的组件.
4,工厂模式.
a,扩展的开放,修改的关闭.
b,定义了一个创建对象的类,由这个类来封装实例化对象的行为.
c,定义了一个创建对象的抽象方法,由子类决定要实例化类,工厂方法模式将对象的实例化推迟到子类.
d,抽象工厂模式:定义了一个接口用于创建相关或有依赖关系的对象族,无需明确指定具体类.
e,依赖抽象原则:
<1>变量不要持有具体类的引用.
<2>不要让类继承自具体类,要继承自抽象类接口.
<3>不要覆盖基类中已实现的方法.
1,单例模式。
a,有些对象我们只需要一个:线程池、缓存、硬件设备等,如果多个实例会有造成冲突,结果的不一致性问题
b,可以使用静态变量方式来实现或者全局变量。
c,确保一个类最多只有一个实例,并且保证有一个全局的访问点.
d,声明一个私有的构造函数,提供一个静态的方法来创建私有对象.
e,单例模式在多线程中的优化.
<1>getInstance中添加同步锁,因为同步锁很消耗资源,在多次调用getInstace中,不建议使用
<2>使用急切创建实例解决方案,直接在static中new出来.
<3>双重检查加锁解决方案.
public volatile static ChocolateFactory instance=null;
public static ChocolateFactory getInstance(){
if(instance==null){
synchroized(ChocolateFactory.class){
if(instance==null){
instance=new ChocolateFactory();
}
}
}
return instance;
}
2,装饰者模式.
a,动态的将新功能附加到对象上,在对象功能扩展方面,它比继承更有弹性.
b,java的io结构:inputstream
3,观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为subject,依赖的对象为observer,subject通知observer变化.
a,被观察者(subject)与观察者(observer);
b,被观察者登记注册、移除和通知,观察者接收输入.
3,外观模式.
a,提供一个统一的接口,来访问子系统中一群功能相关接口,它定义了一个高层接口,让子系统更容易使用.
b,最小知识原则:尽量减少对象之前的交互,只留几个密友,项目设计中就是不要让太多的类耦合在一起.
c,对象方法调用范围:对象本身,作为参数传进来的对象,此方法创建和实例化的对象,对象的组件.
4,工厂模式.
a,扩展的开放,修改的关闭.
b,定义了一个创建对象的类,由这个类来封装实例化对象的行为.
c,定义了一个创建对象的抽象方法,由子类决定要实例化类,工厂方法模式将对象的实例化推迟到子类.
d,抽象工厂模式:定义了一个接口用于创建相关或有依赖关系的对象族,无需明确指定具体类.
e,依赖抽象原则:
<1>变量不要持有具体类的引用.
<2>不要让类继承自具体类,要继承自抽象类接口.
<3>不要覆盖基类中已实现的方法.
相关文章推荐
- Spring AOP整理
- java序列化和反序列化
- java新手笔记13 继承
- Java学习笔记-------登录界面0
- JAVA 并发编程-多个线程之间共享数据(六)
- myeclipse8.5新建的maven项目变成web项目
- Java:IO流的一些典型例子
- java新手笔记12 单例
- 排序都有哪几种方法?请列举。用JAVA实现一个快速排序?
- Java 多线程(六) synchronized关键字详解
- @[Java]读取文件方法大全
- java新手笔记11 类的静态属性、方法(单例)
- java新手笔记10 构造器
- eclipse中配置maven
- eclipse中配置maven
- Java学习之路:详细解释Java解析XML四种方法
- java 产生的固体物的基础上 增删改的SQL声明
- [Domino]如何用java远程访问Domino邮箱数据
- spring task定时器的运用
- struts2基本介绍