java简单设计作品_java 几种常见的简单设计模式

标签:

前言:

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。用于解决特定环境下、重复出现的特定问题的解决方案。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。(引用---点击打开链接)

一、单例模式(Singleton Pattern)

a、单例模式:是一种常见的设计模式。为了保证一个类在内存中只能有一个对象。

思路:1、如果其他程序能够随意用new创建该类对象,那么就无法控制个数。因此,不让其他程序用new创建该类的对象。

2、既然不让其他程序new该类对象,那么该类在自己内部就要创建一个对象,否则该类就永远无法创建对象了。

3、该类将创建的对象对外(整个系统)提供,让其他程序获取并使用。

步骤:1、将该类中的构造函数私有化。

2、在本类中创建一个本类对象。

3、定义一个方法,返回值类型是本类类型。让其他程序通过该方法就可以获取到该类对象。

单例模式中又有:饿汉式和懒汉式两种

1、饿汉式:不管你需不需要,都在类内部直接先生成一个对象。因为构造方法为私有的,所以外面无法new新的对象,只能通过getInstance来获得这个唯一的对象,从而实现单例模式

/*饿汉式*/

publicclassSingle {

privatestaticfinalSingle s=newSingle();

privateSingle(){

}

publicstaticSingle getInstance(){

returns;

}

}

2、懒汉式:与饿汉式不同之处在于,不是直接生成一个对象,而是在需要对象是才会生成,也就是只有当调用getInstance这个方法是才会产生这个唯一对象。(也可以说是单例的延迟加载方式)

/*懒汉式*/

publicclassSingle2 {

privatestaticSingle2 s;

privateSingle2(){

}

publicstaticSingle2 getInstance(){

if(s==null){

s = newSingle2();

}

returns;

}

}

这个类可以满足基本要求,但是,像这样毫无线程安全保护的类,如果我们把它放入多线程的环境下,肯定就会出现问题了(问题就是假如有多个线程同时到达if(s==null)时,这个条件都成立,那么就会产生多个对象了,就违背了我们的本意),如何解决?我们首先会想到对getInstance方法加synchronized关键字。所以该为下面这句即可。

http://hi.680.com/8753180

http://hi.680.com/8753191

http://hi.680.com/8753198

http://hi.680.com/8753201

http://hi.680.com/8753204

http://hi.680.com/8753212

http://hi.680.com/8753221

http://hi.680.com/8753224

http://hi.680.com/8753227

http://hi.680.com/8753234

http://hi.680.com/8753240

http://hi.680.com/8753246

http://hi.680.com/8753249

http://hi.680.com/8753255

http://hi.680.com/8753261

http://hi.680.com/8753267

http://hi.680.com/8753276

http://hi.680.com/8753285

http://hi.680.com/8753291

http://hi.680.com/8753297

http://hi.680.com/8753303

http://hi.680.com/8753315

http://hi.680.com/8753321

http://hi.680.com/8753327

http://hi.680.com/8753333

http://hi.680.com/8753339

http://hi.680.com/8753346

http://hi.680.com/8753352

http://hi.680.com/8753358

http://hi.680.com/8753364

http://hi.680.com/8753370

http://hi.680.com/8753376

http://hi.680.com/8753385

http://hi.680.com/8753391

http://hi.680.com/8753394

http://hi.680.com/8753400

http://hi.680.com/8753406

http://hi.680.com/8753412

http://hi.680.com/8753418

http://hi.680.com/8753424

http://hi.680.com/8753430

http://hi.680.com/8753436

http://hi.680.com/8753442

http://hi.680.com/8753448

http://hi.680.com/8753454

http://hi.680.com/8753460

http://hi.680.com/8753466

http://hi.680.com/8753473

http://hi.680.com/8753479

http://hi.680.com/8753483

http://hi.680.com/8753489

http://hi.680.com/8753495

http://hi.680.com/8753501

http://hi.680.com/8753507

http://hi.680.com/8753513

http://hi.680.com/8753516

http://hi.680.com/8753522

http://hi.680.com/8753528

http://hi.680.com/8753534

http://hi.680.com/8753540

http://hi.680.com/8753546

http://hi.680.com/8753553

http://hi.680.com/8753559

http://hi.680.com/8753565

http://hi.680.com/8753572

http://hi.680.com/8753581

http://hi.680.com/8753587

http://hi.680.com/8753593

http://hi.680.com/8753599

http://hi.680.com/8753605

http://hi.680.com/8753611

http://hi.680.com/8753617

http://hi.680.com/8753623

http://hi.680.com/8753629

http://hi.680.com/8753635

http://hi.680.com/8753641

http://hi.680.com/8753647

http://hi.680.com/8753653

http://hi.680.com/8753659

http://hi.680.com/8753665

http://hi.680.com/8753671

http://hi.680.com/8753677

http://hi.680.com/8753683

http://hi.680.com/8753689

http://hi.680.com/8753699

http://hi.680.com/8753706

http://hi.680.com/8753712

http://hi.680.com/8753718

http://hi.680.com/8753724

http://hi.680.com/8753730

http://hi.680.com/8753739

http://hi.680.com/8753745

http://hi.680.com/8753751

http://hi.680.com/8753757

http://hi.680.com/8753763

http://hi.680.com/8753769

http://hi.680.com/8753775

http://hi.680.com/8753784

http://hi.680.com/8753790

http://hi.680.com/8753796

http://hi.680.com/8753799

http://hi.680.com/8753805

http://hi.680.com/8753811

http://hi.680.com/8753817

http://hi.680.com/8753823

http://hi.680.com/8753829

http://hi.680.com/8753835

http://hi.680.com/8753841

http://hi.680.com/8753848

http://hi.680.com/8753854

http://hi.680.com/8753863

http://hi.680.com/8753869

http://hi.680.com/8753875

http://hi.680.com/8753881

http://hi.680.com/8753887

http://hi.680.com/8753893

http://hi.680.com/8753899

http://hi.680.com/8753902

http://hi.680.com/8753908

http://hi.680.com/8753914

http://hi.680.com/8753921

http://hi.680.com/8753927

http://hi.680.com/8753933

http://hi.680.com/8753939

http://hi.680.com/8753945

http://hi.680.com/8753951

http://hi.680.com/8753957

http://hi.680.com/8753963

http://hi.680.com/8753969

http://hi.680.com/8753979

http://hi.680.com/8753985

http://hi.680.com/8753991

http://hi.680.com/8753997

http://hi.680.com/8754006

http://hi.680.com/8754025

http://hi.680.com/8754037

http://hi.680.com/8754043

版权声明:本文为博主原创文章,未经博主允许不得转载。

标签:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值