Android设计模式 单例模式(饿汉模式)

实现单例模式主要有以下几个关键点。
(1)构造函数不对外开放,一般为private;
(2)通过一个构造方法或者枚举返回单例类的对象;
(3)确保单例类的对象有且只有一个,尤其是在多线程的情况下;
(4)确保单例对象在反序列化时不会重新构造对象;

单例模式的简单实例(饿汉模式)
一个公司员工组成为例 一个公司只能有一个CEO 许多个VP和员工

//员工类
public class Staff {
    public void work() {
        // 干活
    }

}

//VP类

package demo;

//副总裁
public class VP extends Staff {
    public void work() {
        // 管理下面经理
    }
}

//CEO

package demo;
//饿汉模式单例
public class CEO extends Staff {
    private CEO() {
    }

    public static final CEO mCeo = new CEO();

    public static CEO getCeo() {
        return mCeo;
    }

    public void work() {
        // 管理VP
    }
}

//公司类

package demo;

import java.util.ArrayList;
import java.util.List;

public class Company {
    private List<Staff> allStaffs = new ArrayList<Staff>();

    public void addStaff(Staff staff) {
        allStaffs.add(staff);
    }
    public void showAllStaffs() {
        for (Staff s : allStaffs) {
            System.out.println("员工  :" + s.toString());
        }
    }
}

//测试类

package demo;

public class Test {

    public static void main(String[] args) {
        //招聘CEO
        company.addStaff(CEO.getCeo());
        company.addStaff(CEO.getCeo());
        //招聘VP
        company.addStaff(new VP());
        company.addStaff(new VP());
        //招聘Staff
        company.addStaff(new Staff());
        company.addStaff(new Staff());
        company.addStaff(new Staff());

        company.showAllStaffs();
    }
}

最后的输出结果
员工 :demo.CEO@15db9742
员工 :demo.CEO@15db9742
员工 :demo.VP@6d06d69c
员工 :demo.VP@7852e922
员工 :demo.Staff@4e25154f
员工 :demo.Staff@70dea4e
员工 :demo.Staff@5c647e05

总结 由此可以看到 CEO是同一个对象 只能通过GET方式获取 很明显的看出单例类和非单例类的区别。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值