网站开发语言湖南seo优化哪家好
【注意】:工厂模式学习知识结构如下:
(一)、单例模式
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(s==null){ //首先,可能会有多个线程到这一步认为都是空,所以这是一重判断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 ;x<50 ;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、