码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-21 01:54:57      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

前言:

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


一、单例模式(Singleton Pattern

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

思路:1、如果其他程序能够随意用new创建该类对象,那么就无法控制个数。因此,不让其他程序用new创建该类的对象。
    2、既然不让其他程序new该类对象,那么该类在自己内部就要创建一个对象,否则该类就永远无法创建对象了。
    3、该类将创建的对象对外(整个系统)提供,让其他程序获取并使用。

步骤:1、将该类中的构造函数私有化。
    2、在本类中创建一个本类对象。
    3、定义一个方法,返回值类型是本类类型。让其他程序通过该方法就可以获取到该类对象。

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

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

  1. /*饿汉式*/  
  2. public class Single {  
  3.     private static final Single s=new Single();  
  4.     private Single(){  
  5.     }  
  6.     public static Single getInstance(){  
  7.         return s;  
  8.     }  
  9. }  
2、懒汉式:与饿汉式不同之处在于,不是直接生成一个对象,而是在需要对象是才会生成,也就是只有当调用getInstance这个方法是才会产生这个唯一对象。(也可以说是单例的延迟加载方式)

  1. /*懒汉式*/  
  2. public class Single2 {  
  3.     private static Single2 s;  
  4.     private Single2(){  
  5.     }  
  6.     public static Single2 getInstance(){  
  7.         if(s==null){  
  8.             s = new Single2();  
  9.         }  
  10.         return s;  
  11.     }  
  12. }  
这个类可以满足基本要求,但是,像这样毫无线程安全保护的类,如果我们把它放入多线程的环境下,肯定就会出现问题了(问题就是假如有多个线程同时到达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

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

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

标签:

原文地址:http://blog.csdn.net/happyboycwh/article/details/47822397

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!