软件设计模式(1单例模式2工厂模式)

软件设计模式
   :前辈总结的常见的处理编程问题的固定结构
   1 单例模式
      实例化多次对象只有一个,让某个类只能被实例化一次
    实现步骤:
  控制创建对象只有一个,不能让用户决定创建或者不创建
两步
      1) 不能让用户创建对象
        不让用户访问构造方法,构造方法私有化      
      2) 开发者创建一个,并且只创建一次
   获取对象,必须用静态方法,因为成员方法本身就要对象来调用它
      3) 存储对象的变量 
   变量不储存就不能重复利用,为了保证对象唯一,必须创建对象后重复使用的都是他
   此时静态变量储存对象再好不过,它和类相生,周期一致.
   根据创建对象的时机不同,分为两种
   1.懒汉模式
      用到的时候再创建对象,也是第一次获取的时候
   2.饿汉模式
       类加载时候,就立刻创建对象
两个模式的区别
  1. 内存角度:懒汉模式好一点,用到的时候在创建使用,一般叫懒加载/迟加载,
       饿汉模式浪费内存,还没用呢就先创建了
  2. 线程安全角度:饿汉模式在类加载阶段就初始化了,所以多线程没有问题,
     懒汉模式在多线程并发性的情况下,就不行了,可能创建多个对象,但是可以通过双重校验加锁解决
  总结:所以 一般我们使用懒汉模式居多,尽管在多线程下,也使用懒汉模式,使用双重校验加锁解决并发问题即可 
    饿汉模式:
----

public class Singleton_01 {
private static Singleton_01 singleton_01 = new Singleton_01();
//创建对象
public static Singleton_01 getlnstance(){//在类里面对象能用全属性的类型就是次类
    return singleton_01;
}
private Singleton_01(){}//私有化构造方法
}


---------
懒汉模式

public class Singleton_02 {
private Singleton_02(){}    
private static Singleton_02 s;
public static Singleton_02 getlntance(){
    if(s==null){
        s = new Singleton_02();
    }
    return s;
}
}    


----------------------------------
2  工厂模式
  在调用类和实现类之间有一个媒介类,解决改变调用关系改变改代码难的问题
 

 public class Test {
public static void main(String[]args){
    A a = new A();
    // a = new B();//需求改变调用不同子类
     a = new B();
     a = new B();
    a = AFactory.getA();
    a = AFactory.getA();
}
}
class AFactory {
    public static A getA(){//可以通过改这个"对接bc工厂"的类来快捷实现不同调用
        return new  B();
    }
}
class A{}
class B extends A{}
class c extends A{} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值