关于设计模式单例模式

从网上看到很多设计模式,尤为单例模式比较简单,也比较常用,在网上查的大部分都是官方回答,不厌其烦。 单例模式,比较简单但是常用,单例有很多写法,今天就说一种简单易懂的。


单例模式特点:
1、单例类必须自己创建自己的唯一实例并且只有一个实例
2、必须拥有一个私有的构造函数(防止在别的类中new出一个新的类对象)
3、必须声明一个静态的私有的(类)类型的变量
4、必须有个公有的静态的方法(给所有对象提供这一实例 )(判断系统是否已经有了这个单例,如果有则返回,没有则创建


代码部分:
[AppleScript]  纯文本查看  复制代码
?
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
namespace Temp
{ [ / size]
[size = 4 ] / / 步骤一[ / size]
[size = 4 ]Class Singleton
     { [ / size]
[size = 4 ]       / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
 
         / / 定义一个私有静态变量                                     
[color = #4169e1]        private static Singleton single;[/color]
                                                                  
         / / 定义一个私有构造
[color = #4169e1]        private Singleton() { }                             [/color]
 
         / / 在方法中实现类的实例化                                 
[color = #4169e1]        public static Singleton Sing()
         {   [ / color]
             / / 判断Single是否有值(如果没有New一个返回出去,如果有直接返回)                                   
[color = #4169e1]            if (single == null)
             {                                                    
                 single = new Singleton ( ) ;
             }                                                      
             return single;
         } [ / color]
         / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
 
         / / 普通方法
         public void Add ( int a , int b )
         {
             Console.WriteLine ( "a + b = " + ( a + b ) ) ;
         }
     }
 
[ / size][size = 4 ] / / 步骤二:[ / size][size = 4 ]
     Class Program
     {
         static void Main ( string [] args )
         { [ / size]
[size = 4 ]      / / 调用单例的对象
       Singleton sin = Singleton.Sing ( ) ;[ / size]
[size = 4 ]     / / 利用声明的单例对象调用方法
       sin.Add ( 1 , 2 ) ;
         }
     }
}




**代码部分放入编辑器中看的会清晰些
【注】在单例里写别的方法时与普通类写方法是一样的,唯一不同的是单例需要保证类对象的唯一性。只有一个地址。


优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。 2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

具体什么时候使用单例,完全看个人需求。
以上纯粹是个人的对单例模式的一些理解,作为新鸟可能会有写的不对的地方,如果有不对的地方或不理解的地方,你们回帖,本人会尽量修正。
希望对一些不了解单例模式的人有一些帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值