常用设计模式

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

单例模式

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

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、客户端。由客户端创建实现对象,将实现对象传给策略对象,由策略对象调用实现对象返回结果。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值