设计模式之单例模式的简单demo

 1 /*
 2  * 设计模式之单例模式的简单demo
 3  */
 4 class Single
 5 {
 6     /*
 7      * 创建一个本类对象。
 8      * 和get/set方法思想一样,类不能直接调用对象
 9      * 所以用private限制权限
10      */
11     private static Single s = new Single();
12     /*
13      * 构造函数私有化目的是为了只能产生一个对象
14      */
15     private Single(){}
16     // 定义一个方法返回该对象,让外部可以调用。
17     public static Single getInstance()
18     {
19         return s;
20     }
21 }
22
23 class  SingleDemo
24 {
25     public static void main(String[] args)
26     {
27 //        Single s = Single.s;
28         Single s1 = Single.getInstance();
29         Single s2 = Single.getInstance();
30         System.out.println(s1 == s2);
31     }
32 }
/*
 * 单例模式之饿汉式与懒汉式
 */

 //饿汉式
class Single
{
    private static Single s = new Single();

    private Single(){}

    public static Single getInstance()
    {
        return s;
    }
}
//懒汉式
class Single
{
    private static Single s = null;

    private Single(){}

    public static Single getInstance()
    {
        if (s == null)
        {
            s = new Single();
        }
        return s;
    }
}
 1 /*
 2  * 单例模式的小例子
 3  */
 4 class SuperMan
 5 {
 6     private String name;
 7
 8     private static SuperMan man = new SuperMan("Clarke");
 9
10     private SuperMan (String name)
11     {
12         this.name = name;
13     }
14
15     public static SuperMan getInstance ()
16     {
17         return man;
18     }
19
20     public void setName(String name)
21     {
22         this.name = name;
23     }
24     public String getName()
25     {
26         return this.name;
27     }
28 }
29
30 class SuperManDemo
31 {
32     public static void main(String[] args)
33     {
34         SuperMan s1 = SuperMan.getInstance();
35         String name1 = s1.getName();
36         System.out.println("name1 = " + name1);
37
38         SuperMan s2 = SuperMan.getInstance();
39         s2.setName("hero");
40         String name2 = s2.getName();
41         System.out.println("name2 = " + name2);
42     }
43 }
时间: 2024-10-05 06:31:32

设计模式之单例模式的简单demo的相关文章

设计模式之单例模式以及简单代码实现

单例模式 保证整个应用某个实例只有一个 单例模式包括懒汉模式和饿汉模式 饿汉模式 懒汉模式 测试类 区别: 饿汉模式的特点加载类时比较慢,但运行获取对象速度比较快 线程安全 懒汉模式加载类时比较快,运行获取对象的速度慢 线程不安全

PHP设计模式之单例模式简单代码介绍

PHP设计模式之单例模式 单例模式是一种创建型模式,它会限制应用程序,使其只能创建某一特定类类型的一个单一的实例.举例来说,一个web站点将会需要一个数据库连接对象,但是应该有且只能有一个,因此我们通过使用单例模式来实现这种限制. 我们可以使用一个静态属性来保证对于一个特定的类来说只存在一个单一的实例. Class someclass{ Static private $_instance = NULL; } [示例]config类实现了单例模式,以便整个web应用程序可以使用同一个配置对象. <

大话设计模式(四)单例模式的优与劣

大话设计模式(四)单例模式的优与劣 前言 首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例.     简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在). 下图是单例模式的结构图. 下面就来看一种情况(这里先假

设计模式实例学习-单例模式(Android中的使用场景)

1.设计模式实例-单例模式 单例模式,故名思议,是指在一个类中通过设置静态使得其仅创造一个唯一的实例.这样设置的目的是满足开发者的希望--这个类只需要被实例化创建一次,同时因为其为静态的缘故,加载的速度也应该快于正常实例化一个类的速度(理论上). 在Android开发中,当我们需要创建一个Fragment的时候常常会用到这样的模式,没有代码的学习是虚无的,接下来亮代码学习: public class SelectFrame extends Fragment { private final sta

C#设计模式(1)——单例模式

一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考.首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类) 二.单例模式的介绍 说到单例模式,大家第一反应应该就是——什么是单例模式?,从“单例”字面意思上理解为——一个类只有一个实例,所以单例模式也就是保证一个类只

iOS设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂的生活场景,卖早点的小摊贩,他给你提供包子,馒头,地沟油烙的煎饼等,小贩是一个工厂,它生产包子,馒头,地沟油烙的煎饼.该场景对应的UML图如下所示: 图1:简单工厂模式UML图 简单工厂模式的参与者: 工厂(Factory)角色:接受客户端的请求,通过请求负责创建相应的产品对象. 抽象产品(Abstract Product)角色: 是工厂模式所创建对象的父类或是共同拥有的接口.可是抽象类或接口. 具体产品(Conc

设计模式(1)单例模式

程序中有时候需要保存全局的数据,比如程序的配置文件,需要随时检索的.比如程序中有些变量需要全局保存全局用,这时候我们不想用一个全局变量来保存 这时候,可以使用单例模式,从名称可以看出,单例模式就是类的实例全局只创建一个.怎么样才能保存只创建一个实例呢? 我们可以设置标识位,创建过的就不再创建了.下面是单例的简单实现 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

每天一个设计模式-4 单例模式(Singleton)

每天一个设计模式-4 单例模式(Singleton) 1.实际生活的例子 有一天,你的自行车的某个螺丝钉松了,修车铺离你家比较远,而附近的五金店有卖扳手:因此,你决定去五金店买一个扳手,自己把螺丝钉固定紧.不一会儿,自行车就被你修好了:首先,这个扳手你不会扔掉,下次用的时候直接找出来就用了.好,今天的主题出来了“单例模式”. 2.与变成关联 在上面的例子中,能找出几个关键字:“买一个扳手”,“螺丝钉固定紧”,“不会扔掉扳手”,“下次用直接找出来”.我们结合标题和这几个关键字好好理解一下: 买一个

最常用的设计模式(单例模式)

记得刚开始涉足程序的时候, 去笔试 ,发现有一个笔试题经常粗线,写一个单例模式的基本实现, 当时没研究设计模式也就不知为何物, 到今日  , 才发现它已成为我日常开发最常用的一种设计模式. 我写的所有设计模式的代码都会用java 呈现, 虽然第一个学习的是c++但是 最开始作为工作的是java,并且有点偏好java 单例模式 , 意思就是 整个系统仅只有此类的一个实力, 当然这只是狭义的单例,经常看到变种的单例是允许,创建指定数量的实例的 单例模式是一种创建型模式. 它是优化的一种策划, 避免重