Java基础——设计模式

设计模式:是在大量实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式
共23种设计模式

单例设计模式:
  1.解决的问题:使得一个类只能够创建一个对象
  2.实现:
  1)饿汉式:

class Singleton{
    //1.私有化构造器,使得在类的外部不能调用此构造器
    private Singleton(){

    }
    //2.在类的内部创建一个实例
    private static Singleton instance = new Singleton();

    //3.私有化此对象,通过共有的方法调用
    //4.此公有方法,只能通过类  来调用,因此必须声明为static的,故同时类的实例也必须声明为static的
    public static Singleton getInstance() {
    return instance;
    }
}

  

    2)懒汉式:(可能存在线程安全问题

class Singleton{
    //1.
    private Singleton(){

    }
    //2.
    private static Singleton instance = null;
    //3.
    public static Singleton getInstance() {
    if(instance == null){
    instance = new Singleton();
    }
    return instance;
    }
}

  

懒汉式(解决了线程安全问题

package test;

public class TestSingleton {
	
}

class Singleton{
	private Singleton() {
		
	}
	
	private static Singleton instance = null;
	
	public static Singleton getInstance() {
		if(instance == null) { //告知后面的线程,已经有线程创建了对象,直接不用等待,继续执行return(减少了等待时间,提高了后面线程的效率)
			synchronized(Singleton.class){//当有线程进来之后,后面的线程就进不来了,在外面等待
				if(instance == null) {
					instance = new Singleton();
				}
			}
		}
		return instance;
	}
}

  

模板方法设计模式:
  1.解决的问题:功能内部一部分是确定的,一部分是不确定的。这时,可以把不确定的部分暴露出去,让子类去实现。
  编写一个父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类去实现,就是一种模板模式。

原文地址:https://www.cnblogs.com/SkyeAngel/p/7801284.html