联系我们 - 广告服务 - 联系电话:
您的当前位置: > 综合 > > 正文

多例模式是什么?多例模式的概念和作用

来源:CSDN 时间:2023-02-07 10:52:36

多例模式的概念和作用

多例模式:指在程序运行期间,某个类只需固定几个实例,不能多,也不能少。这时就需要将这个类设计为:多例模式。 2.例如: 扑克程序:程序中会定义:扑克类。但程序运行,固定需要54个扑克对象,这时这个“扑克类”就需要设计为“多例模式” 一个程序:需要用到“红、绿、蓝”三个颜色,我们可以定义颜色类,但我们只需要三个对象,所以这时就可以将“颜色类”设计为“多例模式”。

多例模式的实现方式—获取通用对象


(资料图片仅供参考)

不能指定获取某个对象

public class Student {//1.构造方法私有化    private Student(){}    //2.提供一个集合,集合中存储本类对象    private static ListstuList = new ArrayList<>();    static {//初始化50个Student对象,存储到集合        for (int i = 0; i < 50; i++) {stuList.add(new Student());        }    }    //3.定义公有、静态方法,随机获取集合中的一个Student对象    public static synchronized Student getInstance(){Random random = new Random();        int i = random.nextInt(stuList.size());        return stuList.get(i);    }}

public class Test01 {public static void main(String[] args) {Student stu1 = Student.getInstance();        Student stu2 = Student.getInstance();    }}

多例模式的实现方式—获取特定对象[重点]

构造方法私有化。创建public,static,final 本类对象引用

public class Student {private String name;    public Student(String name, Sex sex) {this.name = name;        this.sex = sex;    }    public String getName() {return name;    }    public void setName(String name) {this.name = name;    }    public Sex getSex() {return sex;    }    public void setSex(Sex sex) {this.sex = sex;    }    private Sex sex;    @Override    public String toString() {return "Student{" +                "name="" + name + "\"" +                ", sex=" + sex +                "}";    }}//多例模式的Sex类class Sex{//1.构造方法私有化    private Sex(String sex) {this.sex = sex;    }    private String sex;    //2.提供两个公有、静态、final的本类对象引用    public static final Sex MAN = new Sex("男");    public static final Sex WOMEN = new Sex("女");    @Override    public String toString() {return sex;    }}

多例模式实现小结 --获取特定对象实现小结

自定义类(Sex),将构造方法私有化,定义几个公有、静态、final的本类对象的引用。定义测试多例类的类(Student类):使用了自定义类(Sex)定义测试类,编写main()方法

责任编辑:

标签:

相关推荐:

精彩放送:

新闻聚焦

关于我们 | 联系我们 | 投稿合作 | 法律声明 | 广告投放

版权所有©2017-2020   太阳信息网京ICP备2021034106号-55

所载文章、数据仅供参考,使用前务请仔细阅读网站声明。本站不作任何非法律允许范围内服务!

联系我们:55 16 53 8 @qq.com

Top