java设计模式之单例模式和简单工厂模式

    xiaoxiao2022-07-03  120

    深度探讨java设计模式

    一、单例模式二、简单工厂模式

    一、单例模式

    1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。

    代码:

    // An highlighted block /** * 第一种:单例模式 */ public class demo01 { private static demo01 d = null; private demo01(){} public static demo01 getExample(){ int j = 1; if (d==null){ System.out.println("第一次实例化"); System.out.println("这个类只能有一次实例化"); d=new demo01(); }else { j =j+1; System.out.println("这是第j次实例化"); System.out.println("此次实例化将默认第一次"); } return d; }

    测试

    public class Test { public static void main(String[] args) { demo01 d1 = demo01.getExample(); demo01 d2 = demo01.getExample(); System.out.println("判断两次实例是否一样"+(d1 ==d2)); } } //结果:第一次实例化 //这个类只能有一次实例化 //这是第j次实例化 //此次实例化将默认第一次 //判断两次实例是否一样true

    二、简单工厂模式

    简单工厂模式(Simple Factory Pattern)因为内部使用静态方法根据不同参数构造不同产品对象实例,也称静态工厂方法模式。 在简单工厂模式中,可以根据参数的不同返回不同实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的 实例通常都具有共同的父类。 /** * 操作工厂类 * @author spring */ class OperationFactory { /** * * @param operate 根据传进来的操作符,选择实例化响应的对象 * @return */ public static Operation createOperate(String operate){ Operation oper = null; switch(operate){ case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; } } /** * 操作抽象类,各种算数操作需要继承此类,并实现getResult方法 */ public abstract class Operation { abstract Integer getResult(int a, int b); } class OperationAdd extends Operation { @Override Integer getResult(int a, int b) { return a+b; } } class OperationSub extends Operation { @Override Integer getResult(int a, int b) { return a-b; } } class OperationMul extends Operation { @Override Integer getResult(int a, int b) { return a*b; } } class OperationDiv extends Operation { @Override Integer getResult(int a, int b) { return a/b; } } /** * 测试操作不再赘述 */ public static void main(String[] args) { Operation oper = OperationFactory.createOperate("+"); oper.getResult(10, 5); }
    最新回复(0)