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();
    }
    }

    }





  • 相关阅读:
    【每日一题】 UVA
    【每日一题】 UVA
    【每日一题】 UVA
    【每日一题】 UVA
    【每日一题】UVA
    【每日一题】 uva-232 模拟+输出要求很严格
    【每日一题】 UVA
    MYSQL约束
    数据库,SQL分类
    类加载器&反射&模块化
  • 原文地址:https://www.cnblogs.com/xiaobo68688/p/2367164.html
Copyright © 2011-2022 走看看