软件设计模式(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{}
上一篇: 设计模式——Decorator模式
下一篇: 软件设计模式
推荐阅读
-
软件设计模式(1单例模式2工厂模式)
-
php实现singleton()单例模式实例,singleton实例
-
PHP实现单例模式最安全的做法_php实例
-
PHP基于单例模式实现的数据库操作基类,php例模式数据库_PHP教程
-
php设计模式 Singleton(单例模式)
-
php设计模式之单例模式学习
-
PHP中的设计模式:单例模式(译)
-
java冒泡排序从大到小数组(java单例模式代码)
-
PHP单例模式面试注意事项 博客分类: vb2005xu自己动手系列FleaPHP/QEEPHP 资料 php
-
PHP单例模式面试注意事项 博客分类: vb2005xu自己动手系列FleaPHP/QEEPHP 资料 php