建筑建设网站,最新淘宝客网站程序,重庆网站建设哪家专业,创新的广州做网站【注意】#xff1a;工厂模式学习知识结构如下#xff1a; #xff08;一#xff09;、单例模式
1.Single类#xff1a;
使用懒汉式#xff1a;对象的延迟加载#xff0c;安全的#xff0c;高效的应用 双重判断提升效率和安全性 package singleton;/** 单例设计模式之… 【注意】工厂模式学习知识结构如下 一、单例模式
1.Single类
使用懒汉式对象的延迟加载安全的高效的应用 双重判断提升效率和安全性 package singleton;/** 单例设计模式之饿汉式(在多线程并发时不会有问题不常用public class Single {private Single(){}private static final Single s new Single();public static Single getInstance(){return s;}
}-------------------------------------------------单例设计模式之懒汉式在多线程并发时可能有问题所以需要加锁public class Single {private Single(){}private static Single s null;public static Single getInstance(){if(s null){s new Single();}return s; }}---------------------------------------------------- public class Single { //改进懒汉式加锁private Single(){}private static Single s null;public static Single getInstance(){if(snull){ //首先可能会有多个线程到这一步认为都是空所以这是一重判断synchronized(Single.class){//同步代码块被锁住的代码块if(s null){//其次不可能两个线程同时锁住所以这是二重判断s new Single();}}}return s; }}* *///使用懒汉式对象的延迟加载安全的高效的应用
//双重判断提升效率和安全性
public class Single {private Single(){}private static Single s null;//这里锁住方法效率就低了结果就是只有一个线程能用那其余线程怎么办只能等着效率很低且没有意义。如果是把创建对象的方法锁住就明显有效率了public static Single getInstance() { if (s null) {//双重判断synchronized (Single.class) {if (s null) {//双重判断s new Single();}}}return s;}} 2、Run类
package singleton;public class Run implements Runnable {public void run(){for(int x 0 ;x50 ;x){Single s Single.getInstance();System.out.println(s);}}}3、Test * 设计模式实际的软件开发对问题的处理总结经验设计模式。前提是面向对象 * * 23种设计模式 * * 单例设计模式 * 保证一个类的对象的唯一性 * 私有构造方法 * 在本类的成员位置创造自己类的对象 * 提供公共方法用来返回自己创建的对象 * * 单例在Java中的应用Runtime
package singleton;/** 设计模式实际的软件开发对问题的处理总结经验设计模式。前提是面向对象* * 23种设计模式* * 单例设计模式* 保证一个类的对象的唯一性* 私有构造方法* 在本类的成员位置创造自己类的对象* 提供公共方法用来返回自己创建的对象* * 单例在Java中的应用Runtime* * */public class Test {public static void main(String[] args) {Run r new Run();//多线程new Thread(r).start();//第一个线程进来判断对象是空拿锁自己创建唯一对象new Thread(r).start();//第二个进程进来对象已不空直接返回唯一对象}}二、简单工厂 1、