您的位置:首页 >房产频道 > 快报 >

单例模式python(单例模式)

导读 大家好,小飞来为大家解答以上的问题。单例模式python,单例模式这个很多人还不知道,现在让我们一起来看看吧!1、单例模式,是一种常用的软

大家好,小飞来为大家解答以上的问题。单例模式python,单例模式这个很多人还不知道,现在让我们一起来看看吧!

1、单例模式,是一种常用的软件设计模式。

2、在它的核心结构中只包含一个被称为单例的特殊类。

3、通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。

4、即一个类只有一个对象实例。

5、单例模式是设计模式中最简单的形式之一。

6、这一模式的目的是使得类的一个对象成为系统中的唯一实例。

7、要实现这一点,可以从客户端对其进行实例化开始。

8、因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。

9、使用工厂方法来限制实例化过程。

10、这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。

11、扩展资料:优缺点:优点一、实例控制单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

12、二、灵活性因为类控制了实例化过程,所以类可以灵活更改实例化过程。

13、缺点一、开销虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。

14、可以通过使用静态初始化解决此问题。

15、二、可能的开发混淆使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。

16、因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

17、三、对象生存期不能解决删除单个对象的问题。

18、在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。

19、在某些语言中(如 C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

20、 参考资料:百度百科---单例模式java模式之单例模式: 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。

21、 特点: 1,一个类只能有一个实例 2,自己创建这个实例 3,整个系统都要使用这个实例 例: 在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。

22、可以看到,所有的客户对象共享一个单例对象。

23、而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。

24、Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

25、在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。

26、一些资源管理器常常设计成单例模式。

27、 外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。

28、每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。

29、内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。

30、这样的系统应当由一个对象来管理这些属性文件。

31、一个例子:Windows 回收站。

32、在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。

33、因此,回收站是单例模式的应用。

34、两种形式:1,饿汉式单例类public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } } 2,懒汉式单例类public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } } 第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。

35、定义:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

36、 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。

37、还有, singleton能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能synchronize的安全自动加1,如果你要把这个数字永久保存到数据库,你可以在不修改单态接口的情况下方便的做到。

38、另外方面,Singleton也能够被无状态化。

39、提供工具性质的功能,Singleton模式就为我们提供了这样实现的可能。

40、使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。

41、我们常常看到工厂模式中类装入器(class loader)中也用Singleton模式实现的,因为被装入的类实际也属于资源。

本文到此分享完毕,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!