zoukankan      html  css  js  c++  java
  • 软件设计单例模式

    学号的单一
    仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。

    类图

    java

    package rjsj.no7;
    
    public class StudentID {
        private static StudentID instance = null;
        private String id;
    
        private StudentID(){}
    
        public static StudentID getInstance() {
            if (instance == null) {
                System.out.println("学生信息注册,分配学号!");
                instance = new StudentID();
                instance.setStudentID("20193288");
            } else {
                System.out.println("学生信息已经被注册,获取其已经存在的学号!");
            }
            return instance;
        }
    
        private void setStudentID(String id) {
            this.id = id;
        }
    
        public String getStudentID() {
            return this.id;
        }
    }
    package rjsj.no7;
    
    public class Client {
        public static void main(String a[]) {
            StudentID stu1,stu2;
            String id1,id2;
            System.out.println("第一次生成学生");
            stu1 = StudentID.getInstance();
    
            System.out.println("第二次生成学生");
            stu2 = StudentID.getInstance();
    
            System.out.println("两学生学号是否一致:" + (stu1==stu2));
    
            id1 = stu1.getStudentID();
            id2 = stu1.getStudentID();
            System.out.println("第一次产生的学号:" + id1);
            System.out.println("第二次产生的学号:" + id2);
            System.out.println("内容是否相等:" + id1.equalsIgnoreCase(id2));
            System.out.println("是否是相同对象:" + (id1==id2));
        }
    }

    C++

    #include <iostream>
    
    using namespace std;
    
    class S_num{
    private:
        static S_num sno;
        static int num;
    public:
        static S_num getintance() {
            // TODO Auto-generated method stub
            if(num==0) {
                cout<<"第一次办理学生证,分配新号码!"<<endl;
                sno.setNum(20193288);
            }
            else {
                cout<<"重复办理学生证,获取旧号码!"<<endl;
            }
            return sno;
        }
        int getNum() {
            return num;
        }
        void setNum(int n) {
            num = n;
        }
    };
    
    int S_num::num = 0;
    S_num S_num::sno = S_num();
    
    int main()
    {
        S_num sno1=S_num().getintance();
        cout<<"第一次获取学号"<<sno1.getNum()<<endl;
        S_num sno2=S_num().getintance();
        cout<<"第二次获取学号"<<sno2.getNum()<<endl;
        cout<<"内容是否相等:"<<(sno1.getNum()==sno2.getNum())<<endl;
        //cout<<"是否是相同对象:"<<(sno1==sno2)<<endl;
    }

     运行截图

  • 相关阅读:
    骆驼命名法,帕斯卡命名法和匈牙利命名法<转>
    海量数据库查询优化<转>
    备份数据库并生成Rar
    标准http状态码[英文注释版本]<转>
    IIS自动停止,iis自动关闭。应用程序池假死、自动重启以及iis权限等解决办法 <转>
    Flex/Silverlight的技术比较<转>
    .NET平台测试驱动开发模拟框架Moq简明教程(实例剖析)<转>
    VisualStudio用IE8调试时遇到的问题(转)
    English learning
    JS调用WebService示例
  • 原文地址:https://www.cnblogs.com/Arisf/p/15685573.html
Copyright © 2011-2022 走看看