Android设计模式精简案例(一)之单例模式

坚持学习每一天
爱生活,爱分享 
如果您喜欢我的文章,可以点击关注,喜欢

为什么要学习设计模式,不用学习学习模式当然也可以写代码,还记得刚成为码农的时候,我进入的是一个很小的公司,当一个很小的小弟。需求下来,就要迅速做出来,并且也没人来检查代码,可谓是想怎么写就怎么写,虾米音乐算不算随心所欲?
程序写着写着重复的东西太多了,耦合十分严重,,性能低下,卡的要命。随时随地崩溃。后面了解到封装架构之类的,但是能力不足,慢慢的才把程序重构了许多次。
重构的过程中,我明白一个问题,想在多次不如去做一次,重构能发现问题,总结问题,升华自己。我是怎么重构的呢?模仿开源项目,学习设计架构理念。
在这个过程中我发现设计模式始终贯穿其中,有许多看不懂的地方,从那时起我就觉得很有必要学习设计模式。现在想想设计模式有哪些好处呢?以下只是自己的一些想法?
第一:提高了可维护性,不用在乱七八糟的代码里找。
第二:可复用性高提高,简单说,写一次全局用。
第三:扩展性高,业务变化,不用推到,也不用改的乱七八糟。
第四:构建优质框架,快速搭建项目。
所以我想简单写一下设计模式,加深印象,并在有需要的时候随时查看。

单例模式

简介:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
使用场景:电脑的任务管理器,回收站,程序中的工具类,线程池,Application等等。
优点:不用频繁创建和销毁,提高系统性能。
缺点:可扩展性较差,没有接口,不能继承,与单一职责原则冲突。
代码示例:
静态内部类方式实现

public  class Singleton_Pattern {
    private String name=null;
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    private static class singleton{
        private static final Singleton_Pattern INSTANCE=new Singleton_Pattern();
    }
    public Singleton_Pattern(){}
    public static final Singleton_Pattern getInstance(){
        return singleton.INSTANCE;
    }
    public void printInfo(){
        System.out.println(name);
    }
}

展示

public class Show_Singleton extends AppCompatActivity{
    private Singleton_Pattern test1;
    private Singleton_Pattern test2;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_singleton);
         test1=Singleton_Pattern.getInstance();
        test1.setName("大牛");
         test2=Singleton_Pattern.getInstance();
        test1.setName("二狗");
        test1.printInfo();
        test2.printInfo();

        findViewById(R.id.btn_show).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(test1==test2){
                    System.out.println("同一个实例");
                    Toast.makeText(Show_Singleton.this,"同一个实例",Toast.LENGTH_SHORT).show();
                }else {
                    System.out.println("不是同一个实例");
                    Toast.makeText(Show_Singleton.this,"不是同一个实例",Toast.LENGTH_SHORT).show();
                }
            }
        });
        Toast.makeText(Show_Singleton.this,"请在源码和log信息里查看",Toast.LENGTH_SHORT).show();
    }

}

结果是同一个实例
代码传送门

你可能感兴趣的:(Android设计模式精简案例(一)之单例模式)