Java 单例设计模式(Java Singleton)

//手机 请上下左右 滑动屏幕 观看更全 !

//package Main;

//单例设计模式和多例设计模式(升级版看enumDemo类(枚举) )

/**
 * @SaySomething(我觉得我应该说点什么的):
 *      :单例模式和多例模式就是控制实例化对象产生的个数,如果单例模式实例在系统中经常被用到,
 *      饿汉式是一个不错的选择,反之如果单例模式在系统中会很少用到或者几乎不会用到,那么懒汉式是一个不错的选择  。
 *      -懒汉式:在程序启动或单例模式类被加载的时候,单例模式实例就已经被创建。
 *      -饿汉式:当程序第一次访问单例模式实例时才进行创建。
 *      -枚举类一般存的是类对象
 * @Attention(注意):
 * @time(时间):-2019/04/29
 * @role(谁):-东方神祇(杨)
 *
 * @modify(修改)-:
 * -@time:
 * -@role:
 */

public class Singleton {
    public static void main(String[] args) {

        //单例
        SingletonDemo Instance = null ;
        Instance = SingletonDemo.getInstance() ;
        Instance.print();
        SingletonDemo Instance1 = SingletonDemo.getInstance() ;
        Instance1.print() ;
        //如果一下两个对象对比皆为true则表示为同一共用对象,并没有创建新对象
        System.out.println(Instance==Instance) ; //如果为true则表两个对象为同一内存地址
        System.out.println(Instance.equals(Instance1)) ;//如果为true则表两个对象内容一样

        //多例
        MoreCaseDemo mcd = null ;
        MoreCaseDemo mcd1 = null ;
        MoreCaseDemo mcd2 = null ;
        mcd=MoreCaseDemo.sgtMoreCasseDemo("好山") ;
        mcd1=MoreCaseDemo.sgtMoreCasseDemo("好水") ;
        mcd2=MoreCaseDemo.sgtMoreCasseDemo("好风光") ;
        System.out.println(mcd.toString()) ;
        System.out.println(mcd1.toString()) ;
        System.out.println(mcd2.toString()) ;
        System.out.println(mcd.equals(mcd2)) ;
        System.out.println(mcd.toString().equals(mcd2.toString())) ;

    }
}

class SingletonDemo{
    private SingletonDemo(){}
    private static final SingletonDemo INSTANCE = new SingletonDemo() ;
   public static SingletonDemo getInstance(){
        return INSTANCE ;
    }
    public void print(){
        System.out.println("杨木发好帅!");
    }
}


//多例设计模式
class MoreCaseDemo{
    private String title ;
    private MoreCaseDemo(String title){
        this.title = title ;
    }
    private static final MoreCaseDemo MCD = new MoreCaseDemo("好山") ;
    private static final MoreCaseDemo MCD1 = new MoreCaseDemo("好水") ;
    private static final MoreCaseDemo MCD2 = new MoreCaseDemo("好风光") ;
    private static final MoreCaseDemo MCD3 = new MoreCaseDemo("NULL!") ;
    public static MoreCaseDemo sgtMoreCasseDemo(String attribute){
        switch(attribute){
            case "好山" :return MCD ;
            case "好水" :return MCD1 ;
            case "好风光" :return MCD2 ;
            default: return  MCD3 ;
        }
    }
    public String toString(){
        return this.title ;
    }
}

/*---------------------

作者:东方神祇 
本文链接:https://my.oschina.net/yangmufa/blog/write/3083695

版权声明:
      本文为博主原创文章,转载请附上源文链接!

 如果觉得我的论文对您有用,您的请评论点赞与
 合理优质的转发也将是鼓励支持我继续创作的动力!
---------------------*/

转载于:https://my.oschina.net/yangmufa/blog/3083695

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值