Java 构造方法私有化——单例设计模式——多例设计模式

本文深入探讨了单例和多例设计模式的概念与实现。单例模式通过私有化构造方法并提供静态方法获取唯一实例,确保类只有一个实例;多例模式则允许按标记生成多个实例,如性别类的男性和女性实例。两者核心在于构造方法的私有化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

//构造方法私有化
//单例设计模式(Singleton)
class Singleton{
    private static final Singleton INSTANCE=new Singleton();
    private Singleton(){}  //构造方法私有化,则只能访问内部类,所以在内部类实例化对象
    public static Singleton getInstance(){
        return INSTANCE;
    }
    public void print(){
        System.out.println("Hello World!");
    }
}
public class TestDemo{
    public static void main(String args[]){
         Singleton s=Singleton.getinstance();  //声明对象
         s.print();
    }
}
//现在Singleton类里面存在有构造方法,如果没有明确定义一个构造的化,会自动在编译时生成一个无参的,什么都不做的构造方法。
//即:一个类至少会保留一个构造方法
//一旦构造方法私有化了,那么在外部将无法直接通过关键字new来进行对象实例化操作
//一旦封装之后如果要访问此属性只能够通过getter方法,那么就需要通过一个getter方法可以同样不受Singleton实例化对象的控制,继续使用static属性。
------------------------------------------
//如果说现在要想控制一个类中实例化对象的产生个数,那么首先要锁定的就是类中的构造方法,因为在实例化任何新对象都要使用构造方法,如果构造方法被锁了,那么自然就无法产生新的实例化对象了。
//可是既然需要是一个实例化对象,那么就可以在类的内部使用static方式来定义一个公共的对象,并且每一次通过static方法返回唯一的一个对象,这样外部不管多少次调用,那么最终一个类只能产生唯一的一个对象
//这样的设计就是单例设计模式(Singleton)。

如果要控制一个类中实例化对象的产生个数, 首先要锁定的就是类中的构造方法(使用private定义构造方法),肉为在实例化任何新对象时都要使用构造方法,如果构造方法被锁,就自然就无法产生新的实例化对象。
如果要调用类中定义的操作,那么很显然需要一个实例化对象,这时就可以在类的内部使用static方式来定义一个公共的对象,并且每一次通过static方法返回唯一的一个对象, 这样外部不管有多少次调用, 最终一个类只能够产生唯一的一个对象,这样的设计就属于单例设计模式( Singleton )。

多例设计模式

//多例设计模式可以产生多个对象,要取得的时候需要加上标记
//定义一个性别的类
class Sex{
    private String title;
    private static final Sex MALE=new Sex("男");
    private static final Sex FEMALE=new Sex("女");

    private Sex(String title){     //构造私有化了
         this.title=title;
    }
    public String toString(){
        return this.title;
    }
    public static Sex getInstance(int ch){
        switch(ch){
            case 1:return MALE;
            case 2:return FEMALE;
            default:return null;
        }
    }
}
public class TestDemo1{
    public static void mian(String args[]){
    
         Sex sex=Sex.getInstance(2);
         System.pout.println(sex);
    }
}
//不管是单例还是多例设计,核心:构造方法私有化。

本程序首先定义了一个描述性别的多例程序类, 并且将其构造方法封装, 然后利用getlnstance()方法, 接收指定编号后返问一个实例化好的Sex类对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值