常用设计模式

来源:互联网 发布:c语言随机数头文件 编辑:程序博客网 时间:2024/06/04 21:21

常用设计模式有工厂模式、道理模式以及生产者消费者模式

单例模式

使用静态内部类的方式可以保证线程安全,并且比同步方法的性能好。

package com.qqyumidi;public class SingleTon {    // 利用静态内部类特性实现外部类的单例    private static class SingleTonBuilder {        private static SingleTon singleTon = new SingleTon();    }    // 私有化构造函数    private SingleTon() {    }    public static SingleTon getInstance() {        return SingleTonBuilder.singleTon;    }    public static void main(String[] args) {        SingleTon instance = getInstance();    }}

工厂模式

  实现结构:1、抽象类;2、实现类;3、工厂类;4、客户端。客户端通过工厂类获取实现对象,由客户端调用实现对象返回结果。

定义一个接口

/** * This is factory patter package */package com.roc.factory;/** * 产品的抽象接口  人类 * @author liaowp * */public interface Human {    public void say();}

定义两个产品

/** * This is factory patter package */package com.roc.factory;/** * man  男人 * @author liaowp * */public class Man implements Human {    /* say method     * @see com.roc.factory.Human#say()     */    @Override    public void say() {        System.out.println("男人");    }}
/** * This is factory patter package */package com.roc.factory;/**女人 * @author liaowp * */public class Woman implements Human {    /* say method     * @see com.roc.factory.Human#say()     */    @Override    public void say() {        System.out.println("女人");    }}

创建一个工厂类

package com.roc.factory;/** * 简单工厂放射实现 * @author liaowp * */public class SampleFactory1 {    public static Human makeHuman(Class c){        Human human = null;        try {            human = (Human) Class.forName(c.getName()).newInstance();        } catch (InstantiationException e) {            // TODO Auto-generated catch block            System.out.println("不支持抽象类或接口");            e.printStackTrace();        } catch (IllegalAccessException e) {            // TODO Auto-generated catch block            e.printStackTrace();            System.out.println("没有足够权限,即不能访问私有对象");        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            System.out.println("类不存在");            e.printStackTrace();        }            return human;    }}

策略模式

  实现结构:1、抽象类;2、实现类;3、策略类;4、客户端。由客户端创建实现对象,将实现对象传给策略对象,由策略对象调用实现对象返回结果。

  策略模式与简单工厂模式很相似。它们区别是工厂模式传给工厂类的是参数,客户端负责调用实现对象。而策略模式传给策略类的是对象,由策略对象负责调用实现对象。