频道澳门葡京手机版网址
登录注册
澳门葡京手机版网址 > 澳门葡京手机版网址 > App开发 > 其他 > 正文
java之单例模式解析
2018-08-15 11:11:12      个评论      
收藏   我要投稿

/*
* 设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
* 实用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码的可靠性
* 常用的设计模式:23种,大家要学:单例、模板、装饰、适配器、工厂、代理等
* 单例设计模式:一个类只允许有一个对象,将这个对象作为一个全局的访问点提供出去供大家使用。
* 分析:
* 1.用户只能有一个对象
* 2.全局的访问点:得到的对象就是全局的访问点,如何做到全局?让static去修饰
* 3.如何提供出去?
* 4.供大家使用?---单例的功能
*/

//创建单例类
//饿汉式-在定义变量的同时完成初始化
class SingleInstance{
//2.在类的内部创建一个当前类型的属性并赋值--在类的内部得到了当前类的一个对象
//将变量私有化,让外界无法直接访问 给变量用static修饰 让他成为全局的访问点
private static SingleInstance singleInstance = new SingleInstance();
//1.将构造方法私有化
private SingleInstance(){
}
//3.使用公共的方法将变量提供出去,并将方法设置成静态的,可以通过类名直接调用
public static SingleInstance getInstance(){
return singleInstance;
}
}
//懒汉式-开始只是定义变量,什么时候使用什么时候赋值
class SingleInstance1{
//2.在类的内部创建一个当前类型的属性并赋值--在类的内部得到了当前类的一个对象
//将变量私有化,让外界无法直接访问 给变量用static修饰 让他成为全局的访问点
private static SingleInstance1 singleInstance = null;
//1.将构造方法私有化
private SingleInstance1(){
}
//3.使用公共的方法将变量提供出去,并将方法设置成静态的,可以通过类名直接调用
public static SingleInstance1 getInstance(){
if (singleInstance == null) {
singleInstance = new SingleInstance1();//保证只创建一个对象
}
return singleInstance;
}
//单例的功能区
int num;
}
public class Demo5 {
public static void main(String[] args) {
SingleInstance singleInstance = SingleInstance.getInstance();
SingleInstance singleInstance2 = SingleInstance.getInstance();
System.out.println(singleInstance == singleInstance2);
//实例:完成的功能:将A类中num1的值传给B类对象的num2
A a = new A();
a.num1 = 4;
B b = new B();
//直接赋值,一般类的成员变量是私有的,所以不推荐
b.num2 = a.num1;
//通过传参间接赋值
b.test(a);

//通过单例实现传值
a.test1();
b.test2();
}
}
//测试单例的功能
class A{
int num1;
public void test1(){
SingleInstance1 singleInstance = SingleInstance1.getInstance();
singleInstance.num = num1;
}
}
class B{
int num2;
//通过传参赋值
public void test(A a){
num2 = a.num1;
}
//通过单例传值
public void test2(){
SingleInstance1 singleInstance = SingleInstance1.getInstance();
num2 = singleInstance.num;
}
}

点击复制链接 与好友分享!回澳门葡京手机版网址澳门葡京手机版网址
上一篇:shell编程之输入输出重定向篇
下一篇:SpringMVC基础,HelloWorld解析
相关文章
图文推荐

关于大家 | 联系大家 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 澳门葡京手机版网址_澳门新莆京娱乐_www.88807.com - 点此进入--致力于做实用的IT技术学习网站

XML 地图 | Sitemap 地图