• 单例模式(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 254 Towers of Hanoi
    UVA 701 The Archeologists' Dilemma
    UVA 185 Roman Numerals
    UVA 10994 Simple Addition
    UVA 10570 Meeting with Aliens
    UVA 306 Cipher
    UVA 10160 Servicing Stations
    UVA 317 Hexagon
    UVA 10123 No Tipping
    UVA 696 How Many Knights
  • 原文地址:https://www.cnblogs.com/xiaobo68688/p/2367164.html
Copyright © 2020-2023  润新知