`

工厂方法模式实现单例

 
阅读更多

首先要创建一个单例实例,这个实例的无参构造是私有的,防止外部使用new关键字创建对象

public class Singleton {

    private Singleton() {

    }

    public void doSomething() {
        System.out.println("单例工厂");
    }
}

 

再次创建一个单例工厂,创建对象要在static代码块中,不可在方法getSingleton()中,如果在该方法中,每次调用都会产生一个新的对象,这就违背了单例的规则。

public class SingletonFactory {

    private static Singleton singleton;

    static {
        try {
            Class clazz = Class.forName(Singleton.class.getName());
            Constructor constructor = clazz.getDeclaredConstructor();
            constructor.setAccessible(true);
            singleton = (Singleton) constructor.newInstance();
        } catch (ClassNotFoundException e) {

        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static Singleton getSingleton() {

        return singleton;
    }
}

 客户端代码:

public class SingletonFactoryTest {

    public static void main(String[] args) {

        Singleton singleton = SingletonFactory.getSingleton();
        Singleton singleton2 = SingletonFactory.getSingleton();
        System.out.println(singleton);
        System.out.println(singleton2);
    }

}

 打印结果:

com.za.java.factory.Singleton@3c0f3387

com.za.java.factory.Singleton@3c0f3387

打印两次的结果相同,说明使用的是同一个对象。

分享到:
评论

相关推荐

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等 Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式...

    设计模式单例模式和工厂模式综合应用

    单例模式和工厂模式结合应用,实现了产品的生产,适合用做课程设计,包含详细文档和代码。Java语言。喜欢的可以下载来看看那

    VC2010工厂模式和单例模式的实现

    自己用VC2010写的工厂模式和单例模式的实现

    设计模式:单例设计模式(全部实现方式)工厂设计模式,抽象工厂模式

    工厂模式的常见实现方式包括简单工厂、工厂方法、抽象工厂等。 抽象工厂模式是一种创建型设计模式,它的主要目标是提供一个接口或抽象类,用于创建一系列相关或依赖的对象。该模式的主要优点在于,它可以为客户端...

    PHP工厂模式、单例模式与注册树模式实例详解

    主要介绍了PHP工厂模式、单例模式与注册树模式,结合实例形式工厂模式、单例模式与注册树模式的基本概念、原理、实现方法及使用技巧,需要的朋友可以参考下

    C++设计模式-工厂和单例

    C++ 设计模式中的工厂模式和单例模式VC下源码实现

    单例模式 工厂模式DEMO

    结论:工厂模式体现在接口作为返回类型的运用中,实际上返回的是实现接口的类的对象。 3、两种比较器以及sort()方法的重载: 结论:Icomparable接口在需要比较的类中实现;Icomparer接口在任何类中实现,使用时只需...

    JAVA单例模式的几种实现方法

    1 饿汉式单例类.在类初始化时,已经自行实例化 class EagerSingleton { private static final ... * * 静态工厂方法 */ public static EagerSingleton getInstance() { return m_instance; } }

    设计模式大作业.zip

    本系统使用了简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式、观察者模式一共6种模式实现了从鲜花店订购订购鲜花的这样一个系统。

    PHP设计模式之工厂模式与单例模式

    主要介绍了PHP设计模式之工厂模式与单例模式,简单介绍的工厂模式与单例模式的功能,并结合实例形式分析了工厂模式及单例模式的实现与应用,需要的朋友可以参考下

    Java+单例+多例+工厂+枚举+动态代理===》演示

    #### 单例设计模式实现步骤 1. 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 2. 在该类内部创建一个唯一的对象 3. 定义一个静态方法返回这个唯一对象。 #### 例设计模式的类型 根据实例化...

    java设计模式demo实现

    包含创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式;行为型模式,共十一种:...

    lua设计模式总结

    1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 5、单例模式lua实现 6、抽象工厂模式lua实现 结构型模式 1、装饰模式lua实现 2、代理模式lua实现 3、外观模式lua实现 4、...

    单例模式与工厂模式.docx

    工厂模式 定义:Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses. (定义一个用于创建对象的...

    java常用23中设计模式

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    java版本的设计模式的实现demo

    在Java中,可以通过私有构造函数、静态私有变量和公共静态方法来实现单例模式。 3. 工厂模式 工厂模式是另一种常用的创建型模式,它将对象的创建与使用进行了解耦。根据不同的情况,可以实现简单工厂模式、工厂方法...

    23种设计模式_Java实现

    创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略...

    java设计模式之禅

    以简单、诙谐幽默的例子讲述面向对象设计中的23中设计模式。策略模式、观察者模式、单例模式、工厂方法、抽象工厂、迭代器模式、状态模式、适配器模式、装饰者模式、组合模式、原型模式、模板方法……

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 ...

Global site tag (gtag.js) - Google Analytics