zoukankan      html  css  js  c++  java
  • 单例模式(Singleton Pattern)

    情景:只有一个皇帝(Emperor),三个臣子(Minister)向一个皇帝汇报。

    public class Emperor 
    {
    private static final Emperor emperor = new Emperor();

    private Emperor()
    {

    }

    public static Emperor getInstance()
    {
    return emperor;
    }

    public static void say()
    {
    System.out.println("我是皇帝A");
    }
    }
    public class Minister 
    {

    public static void main(String[] args)
    {
    for(int n=0; n<3; n++)
    {
    Emperor emperor = Emperor.getInstance();
    emperor.say();
    }
    }
    }

    扩展情况:

    有三个皇帝,大臣可以像其中一个皇帝汇报

    import java.util.ArrayList;
    import java.util.Random;


    public class Emperor
    {
    private static int maxNumOfEmperor = 2;
    private static ArrayList<String> nameList = new ArrayList<String>();
    private static ArrayList<Emperor> emperorList = new ArrayList<Emperor>();

    private static int countNumOfEmperor = 0;

    static
    {
    for(int n=0; n<maxNumOfEmperor; n++)
    {
    emperorList.add(new Emperor("皇" + (n + 1)));
    }
    }

    private Emperor()
    {

    }

    private Emperor(String name)
    {
    nameList.add(name);
    }

    public static Emperor getInstance()
    {
    Random random = new Random();

    countNumOfEmperor = random.nextInt(maxNumOfEmperor);

    return emperorList.get(countNumOfEmperor);
    }

    public static void say()
    {
    System.out.println(nameList.get(countNumOfEmperor));
    }
    }
    public class Minister 
    {

    public static void main(String[] args)
    {
    int ministerNum = 5;

    for(int n=0; n<ministerNum; n++)
    {
    Emperor emperor = Emperor.getInstance();

    emperor.say();
    }
    }

    }





  • 相关阅读:
    web api 初体验之 GET和POST传参
    清除系统日志及数据库(sql server)日志最佳实践
    大家好啊!
    [oc学习笔记]多态
    [oc学习笔记]便利构造器无法被继承
    [oc学习笔记]字符串
    antd异步加载的树
    react新建页面步骤(新手必看)
    ECharts 经常会修改到的一些样式配置
    关于数组的一些常用方法
  • 原文地址:https://www.cnblogs.com/xiaobo68688/p/2367164.html
Copyright © 2011-2022 走看看