android创建单例模式,Android单例模式Singleton简单实例设计模式解析.pdf

本文详细介绍了Android开发中的单例模式,旨在解决对象间的耦合度问题,确保类只有一个实例并提供全局访问点。通过一个仓库管理的实例,展示了在没有使用单例模式时可能出现的问题,即每次创建新的仓库对象,导致数据不一致。文章通过代码示例解释了如何设计和实现单例模式,帮助开发者理解并应用这一设计模式。
摘要由CSDN通过智能技术生成

Android 单单例例模模式式 Singleton 简简单单实实例例设设计计模模式式解解析析

单单例例模模式式 Singleton 简简单单实实例例设设计计模模式式解解析析

前言

今天我来全面总结一下A ndroid开发中最常用的设计模式 - 单例模式。

关 设计模式的介绍,可以看下我之前写的:1分钟全面了解“设计模式”

目录

1. 引引入入

1.1 解决的是什么问题

之前说过,设计模式 = 某类特定问题的解决方案,那么单单例例模模式式是解决什么问题的解决方案呢?

含义:单例 =一个实例;

解决的问题:降低对象之间的耦合度

解决方法:单例模式,即实现一个类只有一个实例化对象,并提供一个全局访问点

1.2 实例引入

接下来我用一个实例来对单例模式进行引入

背景:小成有一个塑料生产厂,但里面只有一个仓库。

目的:想用代码来实现仓库的管理

现有做法: 建立仓库类和工人类

其中,仓库类里的quantity =商品数量;工人类里有搬运方法MoveIn(int i)和MoveOut(int i)。

出现的问题:通过测试发现,每次工人搬运操作都会新建一个仓库,就是货物都不是放在同一仓库,这是怎么回事呢? (看下面

代码)

package scut.designmodel.SingletonPattern;

//仓库类

class StoreHouse {

private int quantity = 100;

public void set uantity(int quantity) {

this.quantity = quantity;

}

public int get uantity() {

return quantity;

}

}

//搬货工人类

class Carrier{

public StoreHouse mStoreHouse;

public Carrier(StoreHouse storeHouse){

mStoreHouse = storeHouse;

}

//搬货进仓库

public void MoveIn(int i){

mStoreHouse.set uantity(mStoreHouse.get uantity()+i);

}

//搬货出仓库

public void MoveOut(int i){

mStoreHouse.set uantity(mStoreHouse.get uantity()-i);

}

}

//工人搬运测试

public class SinglePattern {

public static void main(String[] args){

StoreHouse mStoreHouse1 = new StoreHouse();

StoreHouse mStoreHouse2 = new StoreHouse();

Carrier Carrier1 = new Carrier(mStoreHouse1);

Carrier Carrier2 = new Carrier(mStoreHouse2);

System.out.println("两个是不是同一个?");

if(mStoreHouse1.equals(mStoreHouse2)){//这里用equals而不是用 == 符号,因为 == 符号只是

比较两个对象的地址

System.out.println("是同一个");

}else {

System.out.println("不是同一个");

}

//搬运工搬完货物之后出来汇报仓库商品数量

Carrier1.MoveIn(30);

System.out.println("仓库商品余量:"+Carrier1.mStoreHouse.get uantity());

Carrier2.MoveOut(50);

System.out.println("仓库商品余量:"+Carrier2.mStoreHouse.get uantity());

}

}

结结果果::

两个是不是同一个?

不是同一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值