zoukankan      html  css  js  c++  java
  • 1设计模式之单例模式

          数学与逻辑学中,singleton定义为“有且仅有一个元素的集合”。
    单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”
    Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”
        单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。
      控制台程序,以下是program代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;

    namespace Singletonhow
    {
    /// <summary>
    /// 单例模式:适用于只有一个对象的场景,整个程序只有一个唯一对象
    /// 要求:对象只被实例化一次
    /// 比如说:打印机链接,数据库连接池,线程池,写日志对象
    /// </summary>
    class Program
    {
    static void Main(string[] args)
    {
    //生成任务工厂对象
    TaskFactory taskfactory = new TaskFactory();
    for (int i = 0; i < 10; i++)
    {
    //单线程
    //SingletonOne.CreateInstanse();
    taskfactory.StartNew(() => SingletonOne.CreateInstanse());
    }

    Thread.Sleep(15000);
    Console.WriteLine("这里是第二次");
    for (int i = 0; i < 10; i++)
    {
    //单线程
    //SingletonOne.CreateInstanse();
    taskfactory.StartNew(() => SingletonOne.CreateInstanse());
    }
    Console.ReadKey();
    }
    }
    }

     ********************************************未完待续,太困了
  • 相关阅读:
    LeetCode Merge Two Sorted Lists 归并排序
    LeetCode Add Binary 两个二进制数相加
    LeetCode Climbing Stairs 爬楼梯
    034 Search for a Range 搜索范围
    033 Search in Rotated Sorted Array 搜索旋转排序数组
    032 Longest Valid Parentheses 最长有效括号
    031 Next Permutation 下一个排列
    030 Substring with Concatenation of All Words 与所有单词相关联的字串
    029 Divide Two Integers 两数相除
    028 Implement strStr() 实现 strStr()
  • 原文地址:https://www.cnblogs.com/wh123/p/5583971.html
Copyright © 2011-2022 走看看