设计模式-单例模式和多例模式

1、       UML设计图

单例模式UML


                  设计模式-单例模式和多例模式_第1张图片

多例模式UML

设计模式-单例模式和多例模式_第2张图片

设计模式-单例模式和多例模式_第3张图片

2、       核心实现代码

单例模式:

Headmaster类:

public class Headmaster {   //实现单例模式的Headmaster

    private staticHeadmaster instance;   //定义静态变量

    private staticString name;

   

    private Headmaster(String name)    //私有的构造方法

    {

        this.name = name;

    }

   

    public staticHeadmaster getInstance(String name)  //静态的获取市里的方法

    {

        if(instance ==null)//

            instance =new Headmaster(name);

        returninstance;              //已创建实例,返回实例

    }

   

    public String getName()

    {

        returnname;

    }

}

 

多例模式:

MuiOBj类:

public class MultiOBj {

      private staticint counts = 0;

      private staticMultiOBj[]instance= newMultiOBj[10];  //用于储存多个实例事例的数组

      private Stringname;

      private staticStringmessage="对象不存在\n";

      private  MultiOBj(String name){       //私有的构造方法

          this.name = name;

      }

      public static  MultiOBj[] getVicePresident(String name)    //静态的获取事例的方法

      {   booleanflag =true;

            if(counts < 3){          //判断是否已经超过上限

                    for(int i=0;i<counts;i++){   //判断是否有重复

                      if(name.equals(instance[i].name))

                      {

   JOptionPane.showMessageDialog(null,"已存在该对象:"+name+",不可重复创建!");

                          flag = false;

                          break;

                      }        

                  }

                 if(flag){     //没有重复且满足条件可创建

                         instance[counts] =new MultiOBj(name);   //创建事例

JOptionPane.showMessageDialog(null,"创建对象:"+name+"成功!");

                         counts++;

                           if(counts == 1)

                               message ="对象:"+name+"\n";

                          else

                               message +="对象:"+name+"\n";               

           } }

            else      //已经超过上限

JOptionPane.showMessageDialog(null,"已经创建3个对象,不可再创建!");

            returninstance;

      }

      public String getVicePresidentName(){   //返回事例的String变量的类型

          returnname;

      }

      public static String getMessage(){     //返回信息

      return message;

    }

}

 

3、心得体会

第一个实验难度不大,但是又很多注意的细节。首先实验中对静态变量的定义和使用要清晰,理解单例模式是通过创建一个静态类使得智能创建一个对象。多例的原理也是相似,用容器来存储限定的对象个数,就能达到实验目的。

今后还需要继续学习好这门课程。为了配合C#学习,我还打印了一本C#的设计模式配套学习。从中发现设计模式是非常有用的。同时实验暴露了对建模工具使用的不熟悉,今后还要继续努力。

你可能感兴趣的:(体系结构)