# JavaJDK7Study **Repository Path**: hww/JavaJDK7Study ## Basic Information - **Project Name**: JavaJDK7Study - **Description**: java jdk7 api学习实例 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2014-06-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #JavaJDK7Study ## [排序类](http://git.oschina.net/hww/JavaJDK7Study/tree/master/src/com/hww/sort "排序类") 实现了选择排序、冒泡法、线性插入和快速排序方法。还讲述了接口的使用以及在实现类中具体方法提倡尽量不修改传入的参数值,如果需要,应clone一个与参数一样的对象值。 ## [设计模式](http://git.oschina.net/hww/JavaJDK7Study/tree/master/src/com/hww/DesignPattern "设计模式"): - [单例模式](http://git.oschina.net/hww/JavaJDK7Study/tree/master/src/com/hww/DesignPattern/Singleton):单例模式在实际的程序开发中比较常见,常用于创建一个全局共享的类实例,例如在JFianl的核心类JFinal.java中就有: private static final JFinal me = new JFinal(); private JFinal() {} 实现单例模式有两种方法: **1)**将类的构造方法私有化,用一个私有的类变量instance保存类实例,在加载类时,创建类实例,并将类实例赋值给instance;再提供一个公有的静态方法getInstance(),用于获取类的唯一实例并返回instance。 **2)**将类的构造方法私有化,用一个私有变量instance保存类的实例,在加载类时,将null赋给instance;再提供一个静态方法getInstance()用于获取类的唯一实例,该方法首先判断instance是否为null,如果为null,则创建一个对象,负责直接返回instance。 **两种实现单例模式方法的区别**:第一个单类被加载时就创建一个实例;第二个单例模式getInstance第一次被调用时创建唯一的实例,但第二种方法实现单例模式时需要在getInstance方法的声明中使用synchronized关键字,保证某一时刻只有一个线程调用该方法。 - [工厂模式](http://git.oschina.net/hww/JavaJDK7Study/tree/master/src/com/hww/DesignPattern/Factory):在工厂模式中,接口定义规范,实现了接口的抽象类实现部分公共规范,具体工厂类实现个性化规范。借助工厂模式,代码的扩展变得更加容易。就比如我们实现的排序类中,四种排序算法都实现了ISortNumber接口并实现了接口中的升序排列公共规范。然后在定义一个具体的工厂类,根据需求返回相对应的排序算法。 同样在[JFinal](http://www.oschina.net/p/jfinal)开源框架中可以看到工厂模式的应用,很明显地,Plugin肯定用到了,我们来看一下。 package com.jfinal.plugin;public interface IPlugin { boolean start(); boolean stop(); } 同样都可以看到插件都实现了这个接口: ![jfinalPlugin实现类][] 接着就是一个工厂类了: final public class Plugins { private final List pluginList = new ArrayList(); public Plugins add(IPlugin plugin) { if (plugin != null) this.pluginList.add(plugin); return this; } public List getPluginList() { return pluginList; } } - [适配器模式](http://git.oschina.net/hww/JavaJDK7Study/tree/master/src/com/hww/DesignPattern/Adapter):来做个比喻,我们都使用过本本,笔记本电脑充电时需要使用一个电源适配器,也就是说直接的220v电压是不行的,需要通过电源适配器降低电压至适合电脑的电压值。 在适配器模式中存在三种角色:源、目的、适配器。在对应的代码中,数组排序为源,打印为目的。适配器就是把一个排序好了的进行打印。 [jfinalPlugin实现类]: dosc/jfianlplugin.png