单例模式简说--niu

  1. 设计模式,单元测试,重构是今天的程序员必须掌握的程序设计技术.

    设计模式的书都太厚了,看一遍都累个半死,所以我有了这个想法,用最简单的语言和最简单的代码来说明设计模式.

    案例描述:

        街头 银行取款机一次只可以一个人,用一张卡站它前面提款.

    程序:

    /*
     *  银行提款机 ATM         
     */
    package com.singleton;
    public class ATMCash {
     private static ATMCash instance; 
     private String creditCard;
     
     private ATMCash() {  
     }
     
     /**
      * 保证只有一个人一张卡在使用提款机 
      */
     public static synchronized ATMCash getInstance() {
      if (instance == null)
       instance = new ATMCash();
      return instance;
     }

     public String getMoney() {
      return creditCard;
     }
     
     //插入ATM磁卡
     public void setCard(String card) {
      creditCard = card;
     }
     
     //取出ATM磁卡
     public void getCard() {
      creditCard = null;
     }

    }

     

    /*
     * 提款
     */
    package com.singleton;
    public class Singleton {

     public static void main(String[] args) {
      
      //------------下面是我的取款过程--------------
      ATMCash myCash = ATMCash.getInstance();  //来一个人取款
      myCash.setCard("我的银行卡");//插入磁卡
      System.out.println("我取钱用的是  :" +myCash.getMoney()); //取款
      //myCash.getCard(); //取回磁卡
      
      
      //------------下面是你取款过程----------------
      ATMCash yourCash = ATMCash.getInstance(); //来一个人取款
      System.out.println("你取钱用的是  :" + yourCash.getMoney()); //取款
     }
    }

    说明:

     如果我没有取回磁卡,那么无论多少人使用这个提款机,他使用的都将是我的银行卡,程序的输出为:

        我取钱用的是  :我的银行卡
        你取钱用的是  :我的银行卡

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值