设计模式

java中共有23种设计模式:前人不断改善某以功能代码,最后形成了一种最简单,最通用的编写方式,人们把这种定义模式叫做设计模式



多态存在的问题:虽然当想访问对象的时候不用更改方法,直接改实例就可以,但是如果创建实例太多的时候,也会变得麻烦起来

简单静态工厂模式

使用工厂类创建对象,之后通过调用工厂方法进行创建对象

优点:1.提高安全性

          2.便于程序扩展

          3.提高工作性能

1.在工厂类中写一个静态获取对象的方法

public class Factory {   

public static Person getP(){

return new Student() ;

}

}

2.调用方法的时候通过调用工厂类的静态方法获取对象,这样更改获取对象的时候,只改工厂类的静态方法就可以



单例模式:单实例,一个类只能创建一个对象


饿汉式(很饿,一开始就要创建)

1,创建私有的静态的本类对象变量。               

2,私有构造方法

3,对外提供一个静态方法,用来获取该对象

private static Student s=new Student();

private Student(){}

public static Student getS(){

return s;

}


懒汉式(很懒用的时候再创建)

1,创建私有的静态本类变量(不引用对象)

2.私有构造方法

3.对外提供一个静态方法,用来获取该对象,如果本类引用的为空创建一个对象,如果不为空返回该对象

private Teacher t;

private Teacher(){}

public Teacher getT(){

if(t==null){

t=new Teacher();

}

return t;

}

单例模式顾名思义就是为了只创建一个对象,在不考虑多线程的时候我们通过一个if就可以解决这个问题了,但是如果有多个线程创建对象的话,可能会同时进入方法,在第一个线程没有创建完对象的时候,第二个线程完成了是否有对象的判断,这样第二个线程也会发现没有对象,也会去创建对象,这样就会创建两个对象了,由此我们使用同步代码块,解决了在第一个线程没有创建对象完毕,第二个线程是不会去判断是否有对象的。当使用同步代码块后,第一个线程进入之后发现没有对象,就创建了一个,之后的所有线程都要排着队去判断是否已经存在对象了,这样是十分慢的,我们想要在第一个线程创建完对象之后,之后所有的线程可以一起去判断有没有对象,我们就引入了第二个if用来避开同步代码块。

        如果没有第二个if  经过第一个if的判断两个线程发现都没有对象,所以都进入了到if里了,之后第一个线程创建了一个对象之后,由于内部并没有判断,第二个线程又创建一个对象。而如果有了内部的if判断的话,第一个线程进入后判断对象为空创建对象,这时候有了对象了,第二个线程进入后发现有对象了了,就会直接return已经创建的对象,没有第二个if同步代码块内只有一条语句,失去了同步的意义,相当于没有同步代码块。没对象需要同步访问,有对象可以异步访问速度快


第二个if解决的是在没有对象的时候,当很多线程都到达了方法前准备访问方法的时候,所有线程会排队访问,在这时只有第一个线程会创建对象,保证了多线程下的对象的唯一性;第一个if是为了解决当有了一个对象之后,将新来的线程拦截在外边,防止多线程访问同步代码块,出现多线程排队去判断是否已经存在对象的问题

第一个if解决效率,第二个if解决同步问题。(同步代码效率低)

在实际开发过程中一般使用饿汉,懒汉虽然节约内存,每次使用都要创建对象,消耗时间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342