单例模式
/**
* 设计模式: 与技术无关,是一种框架的形式
*
* 对象型模式: 单例、简单工厂
*
* 单例:每次获取的对象都是同一个对象----回顾例子: Runtime
*
* 1.通过类名调静态方法
* 2.获取静态对象
* 3.构造方法私有化
*
* 作用:节省了创建对象的开销
*
* 作业:在多线程中,懒汉式会出现隐患,如何复现问题,并解决
*
*/
class MySingle{
// 饿汉式---立即加载
// private static MySingle single = new MySingle();
// 懒汉式----延时加载
private static MySingle single;
private MySingle() {
}
public synchronized static MySingle getInstance() {
if (single == null){
single = new MySingle();
System.out.println("创建对象");
}
return single;
}
}
class MyThread extends Thread{
@Override
public void run() {
MySingle.getInstance();
}
}
public class Test {
public static void main(String[] args) {
//MySingle single = MySingle.getInstance();
//MySingle single2 = MySingle.getInstance();
//System.out.println(single == single2);
for(int i=0;i<100;i++)
new MyThread().start();
}
}
/**
*简单工厂模式:
*1.静态工厂—Factory.静态方法()
*2.实例工厂—factory.成员方法()
*
*/
public class Test {
public static void main(String[] args) {
//---------1.静态工厂--------------
//Animal animal = Factory.getAnimal();
//----------2.实例工厂-------------------
//Factory factory = new Factory();
//animal = factory.getAnimal2();
}
}