- 浏览: 211525 次
- 性别:
- 来自: 北京
文章分类
1.抽象工厂模式
实例1:
public static Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(),Locale.getDefault());
cal.sharedZone = true;
return cal;
}
Calendar类将构造方法进行私有话,这样获取对象实例只能通过getInstance()方法了。每次访问该方法返回的是一个新生成的对象。
有意思的是Locale.getDefault()也是一个利用了工厂模式,而且是将单例模式和工厂模式的结构来生成一个单例对象。
实例2:
public static Connection getConnection(String url,
String user, String password) throws SQLException {
java.util.Properties info = new java.util.Properties();
// Gets the classloader of the code that called this method, may
// be null.
ClassLoader callerCL = DriverManager.getCallerClassLoader();
if (user != null) {
info.put("user", user);
}
if (password != null) {
info.put("password", password);
}
return (getConnection(url, info, callerCL));
}
使用JDBC的人都调用过该方法。该方法也是典型工厂模式。
因为该方法是对外的入口,所以将该方法生命为public的。虽然该类拥有很多构造方法,但是最后返回实例的都是依靠getConnection(url, info, callerCL)方法,因为他会将传入的参数都封装到properties对象中。最后再调用该方法。做到了很好的封装与代码复用。而且getConnection(url, info, callerCL)也被设计成是是有的方法,就能保住该方法只给其余构造方法进行调用了。
2.单例模式
实例:
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
Runtime是一个典型的单例模式,而且是懒汉式的单例模式。
3.模版模式
实例:
OutputStream类的
public abstract void write(int b) throws IOException;
OutputStream的写操作交给了子类去实现,例如FileOutputStream类会调用native的write方法。
public native void write(int b) throws IOException;注意native方法没有实现体。
4.策略模式
TreeMap类的
public TreeMap(Comparator<? super K> comparator) {
this.comparator = comparator;
}
comparator类是一个接口,里面只包含比较两个对象的方法。
treemap会根据传入的自定义比较器的compare方法判断插入的值应该存放的位置。
即传入的参数对象可能有不同的实现类
5.命令模式
Runnable接口
Runnable是一个典型的命令模式,即每个线程都需要执行不同的操作,因此定义一个命令接口,即Runnable接口。然后使用时需要将Runnable对象传入给Thread类中,Thread就相当于一个调用者(机箱),然后用户对thread对像进行调用就可以执行runnable中定义的操作了。
实例1:
public static Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(),Locale.getDefault());
cal.sharedZone = true;
return cal;
}
Calendar类将构造方法进行私有话,这样获取对象实例只能通过getInstance()方法了。每次访问该方法返回的是一个新生成的对象。
有意思的是Locale.getDefault()也是一个利用了工厂模式,而且是将单例模式和工厂模式的结构来生成一个单例对象。
实例2:
public static Connection getConnection(String url,
String user, String password) throws SQLException {
java.util.Properties info = new java.util.Properties();
// Gets the classloader of the code that called this method, may
// be null.
ClassLoader callerCL = DriverManager.getCallerClassLoader();
if (user != null) {
info.put("user", user);
}
if (password != null) {
info.put("password", password);
}
return (getConnection(url, info, callerCL));
}
使用JDBC的人都调用过该方法。该方法也是典型工厂模式。
因为该方法是对外的入口,所以将该方法生命为public的。虽然该类拥有很多构造方法,但是最后返回实例的都是依靠getConnection(url, info, callerCL)方法,因为他会将传入的参数都封装到properties对象中。最后再调用该方法。做到了很好的封装与代码复用。而且getConnection(url, info, callerCL)也被设计成是是有的方法,就能保住该方法只给其余构造方法进行调用了。
2.单例模式
实例:
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
Runtime是一个典型的单例模式,而且是懒汉式的单例模式。
3.模版模式
实例:
OutputStream类的
public abstract void write(int b) throws IOException;
OutputStream的写操作交给了子类去实现,例如FileOutputStream类会调用native的write方法。
public native void write(int b) throws IOException;注意native方法没有实现体。
4.策略模式
TreeMap类的
public TreeMap(Comparator<? super K> comparator) {
this.comparator = comparator;
}
comparator类是一个接口,里面只包含比较两个对象的方法。
treemap会根据传入的自定义比较器的compare方法判断插入的值应该存放的位置。
即传入的参数对象可能有不同的实现类
5.命令模式
Runnable接口
Runnable是一个典型的命令模式,即每个线程都需要执行不同的操作,因此定义一个命令接口,即Runnable接口。然后使用时需要将Runnable对象传入给Thread类中,Thread就相当于一个调用者(机箱),然后用户对thread对像进行调用就可以执行runnable中定义的操作了。
发表评论
-
多种单例模式的分析
2012-03-28 18:06 0blog.csdn.net/derpvailzhangfan/ ... -
JDK中的设计模式
2012-03-14 22:56 01.Abstract Factory •java.util.C ... -
简单工厂模式使用心得(使用场景)
2012-02-23 18:24 11481在实际项目中,简单工厂模式是我们使用的最多的设计模式之一,简单 ... -
AbstractList中Iterator模式的妙用
2012-01-13 11:51 941AbstractList中为了实现顺序访问AbstractLi ... -
适合使用命令模式的情景
2012-01-13 11:31 884情景1.当借个类都拥有 ... -
Iterator模式
2012-01-13 10:57 855我个人常叫它游标模式,该模式的主要目的就是,顺序访问集合中的各 ... -
使用工厂设计模式的场景
2012-01-12 15:43 2728创建类对象虽然可以使用new(底层也是通过反射创建对象的),但 ... -
JDK中使用的设计模式代码实例
2012-01-05 17:38 0http://stackoverflow.com/questi ... -
享元模式
2011-12-23 10:22 1001通常情况下,我们会需 ... -
策略模式
2011-12-22 17:07 836所谓策略模式就是定义了多种算法,而让不同算法之间的切换不会影响 ... -
合成设计模式
2011-12-22 16:28 942如果要将对象组织到树中,使用树来表示对象之间的关系,请考虑使用 ... -
责任链模式
2011-12-20 18:35 800此文转正于http://wenku.baidu.com/vie ... -
桥梁设计模式
2011-12-19 18:19 802如果有很多对象要处理,而又有很多操作要做。这时可以考虑使用桥梁 ... -
多线程设计模式(Thread-Specific storage)
2011-12-12 15:29 5817引用自http://www.riabook.cn/doc/de ... -
代理模式
2011-11-30 15:26 903代理模式实际上是对对象的一种代理,以控制对象的访问。 有些情况 ... -
观察者模式
2011-11-16 14:48 1367声明转载的,简单易懂,呵呵 观察者模式的构造 l 抽 ... -
命令模式
2011-11-16 14:11 1220今天想学学命令模式,看见了一个文章讲的就是命令模式,感觉实例比 ... -
建造模式
2011-11-14 12:03 879建造模式是将负责对象 ... -
设计模式之适配器模式
2011-11-09 18:24 931适配器模式:主要是为了解决,老的对象在新的环境中不兼容的现象。 ... -
设计模式之模版方法
2011-11-09 16:31 781模版方法是一种非常简单的设计模式:简单的理解就是将关键的业务方 ...
相关推荐
该文档整理了JDK中有关的设计模式,包括创建型、结构型、行为型等模式在JDK中的应用
JAVA设计模式在JDK中的应用JAVA设计模式在JDK中的应用 各种设计模式在JDK当中使用的地方 方便分析源码
JDK中的设计模式应用实例
jdk中设计模式 归纳了JDK中所包含的设计模式,包括作用和其设计类图
该文档中包括了JDK中的23中设计模式的介绍,附有实例
设计模式在JDK中的应用课设--PPT资源 题目要求: 设计模式在JDK中的应用(结合JDK源码,分析JDK对设计模式的支持与应用)。课设内容包括: (a)用UML类图分析JDK所支持或应用的设计模式的结构,并与GOF的结构加以...
JDK中有关23个经典设计模式的示例 JDK,23个设计模式,示例,网页源码
介绍java二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带有简单的例子和类图,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点,希望对大家有所帮助。...
里面包括了读观察者模式的详细介绍,这是JDK中的一个非常重要的模式。
jdk工具介绍JVM垃圾回收23种设计模式 jdk工具介绍JVM垃圾回收23种设计模式 jdk工具介绍JVM垃圾回收23种设计模式
设计模式实战、jdk源码解读等等 ok
阿里10年工作经验大牛讲解设计模式(带案例) 设计模式综合案例 jdk中的设计模式 备忘录模式 策略模式 访问者模式 解释器模式 命令模式 调停者模式 状态模式 多人联机射击游戏在实际开发中综合使用设计模式
设计模式之责任链模式源码 设计模式之责任链模式源码 设计模式之责任链模式源码
面向对象开发中程序员更重视代码的重用性和可维护性,设计模式使人们可以更加简单方便地重复使用成功的设计和体系结构
day40 设计模式、jdk8新特性
java 23种设计模式的类图 java 23种设计模式的类图 java 23种设计模式的类图
设计模式之观察者模式Java版本实现和UML类设计图