多例设计模式
  anLrwkgbyYZS 2023年12月30日 13 0


1. 概述

多例设计模式,限制本对象的实例个数。

特点:构造方法私有化,类内部提供几个实例化对象,然后通过static方法获得。

2. 示例程序

 构造方法私有化,外部类就不能再创建该类的实例,这样才能保证本对象的实例个数。

private MyDuoLi(String value) {
        this.value = value;
    }

 类内部提供几个实例化对象:

private static final MyDuoLi DUO_LI1 = new MyDuoLi("duoLi1");
    private static final MyDuoLi DUO_LI2 = new MyDuoLi("duoLi2");
    private static final MyDuoLi DUO_LI3 = new MyDuoLi("duoLi3");

 通过static方法获得,static方法,静态方法,通过类名就可以访问一个类的静态方法:

public static String getInstance(int op) {
        switch (op) {
            case 1 : return DUO_LI1.getValue();
            case 2 : return DUO_LI2.getValue();
            case 3 : return DUO_LI3.getValue();
            default: return null;
        }
    }

完整代码如下所示: 

public class MyDuoLi {
    private static final MyDuoLi DUO_LI1 = new MyDuoLi("duoLi1");
    private static final MyDuoLi DUO_LI2 = new MyDuoLi("duoLi2");
    private static final MyDuoLi DUO_LI3 = new MyDuoLi("duoLi3");
    private String value;

    public static String getInstance(int op) {
        switch (op) {
            case 1 : return DUO_LI1.getValue();
            case 2 : return DUO_LI2.getValue();
            case 3 : return DUO_LI3.getValue();
            default: return null;
        }
    }

    private MyDuoLi(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public static void main(String args[]) {
        System.out.println(MyDuoLi.getInstance(1));
        System.out.println(MyDuoLi.getInstance(2));
        System.out.println(MyDuoLi.getInstance(3));
    }
}

运行截图如下所示:

多例设计模式_静态方法

2. 枚举(enum)实现多例

完整代码如下所示,枚举的更多用法:链接。

public enum MyDuoLiByEnum {
    DUO_LI1,DUO_LI2,DUO_LI3;

    public static void main(String[] args) {
        System.out.println(MyDuoLiByEnum.DUO_LI1);
        System.out.println(MyDuoLiByEnum.DUO_LI2);
        System.out.println(MyDuoLiByEnum.DUO_LI3);
    }
}

运行截图:

多例设计模式_构造方法_02

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月30日 0

暂无评论

anLrwkgbyYZS