系统架构技能之设计模式—单件模式

  一、开篇

  其实我本来不是打算把系统架构中的一些设计模式单独抽出来讲解的,因为很多的好朋友也比较关注这方面的内容,所以我想通过我理解及平时项目中应用到的一些常见的设计模式,拿出来给大家做个简单讲解,我这里只是抛砖引玉,如果某个地方讲解的不正确或者不详细,请大家批评指出。园子里面的很多的大牛写的设计模式都非常的经典,我这里写可能有点班门弄斧的感觉,不过我还是决定把它写出来,希望能对初学者有一定的帮助和指导的作用。当然我这里如果说某个地方解释的有问题或者说是某个地方写的不符合逻辑之处,还请大家多多指出,提出宝贵意见。

  软件工程中其实有很多总结性的话语,比如说软件=算法+数据结构等等这样的描述,当然我们这里可能算法就是泛指一些软件中的编程方法了,设计模式怎么去理解呢?为什么要有设计模式?它能带来什么?等等这些都是我们需要讨论的问题。首先我们需要知道设计模式能带来什么。可能这才是我们学习它的主要原因,如果说不能为我们在书写软件的过程中带来更方面的好处,那我们也不会使用和学习它。

  设计模式是什么?

  设计模式可以简单的理解为解决某一系列问题的完美的解决方案。我们在软件开发的过程中经常遇到设计功能实现的问题,而设计模式正是为了解决软件设计功能实现时遇到的某一类问题的解决方案。因为一般情况下来说,我们在某个软件功能的开发过程中遇到的功能设计问题,可能是前人很早就遇到过的问题,所以通过这种设计模式的方式来解决,能让我们在软件实现的过程中少走弯路,或者说是给我们的软件设计带来很好的灵活性和适应性。

  设计模式带来了什么?

  设计模式是源于实践,并且每种设计模式都包含了一个问题描述,问题涉及到的参与者并且提供了一个实际的解决方案。设计模式的好处我们可以通过下图来简单说明:       image   当然我这里可能总结还不完全,还请大家补充,我会更新这里面的内容。当然设计模式带来了这么多的好处,所以我们学习设计模式就显得比较必要了,也是从事软件开发及设计必须掌握的基本技能之一。

  设计模式的简单分类:       image

  当然这里可以简单的分为这3大类,下面我们在讲述的过程中将会分别讲解,当然我这里是以创建型模式开始讲解,我想创建型模式也是大家项目中必备的吧?下面我就从创建型模式先来讲解。

  二、摘要

  本文将主要讲解创建型模式中的单例模式先来讲解,因为单例模式是最简单也是最容易理解的设计模式,上手快,易使用的设计模式。本文将从下面的流程来讲解单例模式,后面讲述的设计模式也将使用这样的方式。

       1、什么是单例模式?

       2、单例模式的应用场景。

       3、举例说明单例模式的使用。

       4、总结单例模式的用法。

  三、本文大纲

       a、开篇。

       b、摘要。

       c、本文大纲。

       d、单例模式的简介。

       e、相关应用场景分析。

       f、本文总结。

       g、系列进度。

       h、下篇预告。

  四、单例模式的简介

  本章我们将来讲述下单例模式的使用,首先我们来看看单例模式的定义:

  单例模式:是一种软件设计中常用的设计模式,主要是用来控制某个类必须在某个应用程序中只能有一个实例存在。

  有时候我们需要确保整个系统中只有某个类的一个实例存在,这样有利于我们协调控制系统的行为。例如:我们在某个系统中使用了发送短信的这样的服务,那么我们可能希望通过单一的短信服务类的实例,而不是多个对象实例完成短信的发送服务。这时我们可以通过单例模式来完成。       image

  上图简单描述了单例模式应用的位置。

  我们看看单例模式的几种实现方式:        image

  下面我们来举例说明下这2种方式的实现。

  1、外部控制的方式

    public class Instance 
{
private List<SendMessage> lists = new List<SendMessage>();
private SendMessage sendInstance;

public SendMessage SInstance
{
get
{
return sendInstance;
}
}

public void InstanceMethod()
{
if (lists.Count == 0)
{
sendInstance
= new SendMessage();
lists.Add(sendInstance);
}
else
{
sendInstance
= lists[0];
}
}
}

it知识库系统架构技能之设计模式—单件模式,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。