android中常用的设计模式
来源:互联网 发布:linux安装输入法命令 编辑:程序博客网 时间:2024/04/30 13:54
1、单例模式
1. 为什么要用单例模式;
希望在系统中(或者内存中)只存在一个对象,并且这个对象可以共享(比如说数据库的创建,在应用中只需要有一个数据库,在各个类中也要用到数据库)
2 单例模式的实现:
(1)私有构造
java中的对象一般是通过公有的构造new出对象,如果把构造私有,那么就不能通过new来获取实例。
(2)定义该类的私有的静态的对象;
(3)提供一个静态的公有的的方法,用于创建或者调用
代码如下(以创建全国省,市,县数据库为例):
import android.database.sqlite.SQLiteDatabase;/** * 使用单例模式创建数据库; * * @author yu * 1、私有构造方法;(私有构造,就不能通过new直接创建实例,这样db的实例就只能通过getInstance()的方法取得 * ,保证在jvm中的唯一) * * 2、定义类的实例为私有的,静态的; * * 3、提供一个公有的静态的函数用于创建或者调用该对象(提供一个getInstance的方法,对外访问)。 */public class ChinaDb { // 数据库名称; public static final String DB_NAME = "china_db"; // 数据库版本; public static final int VERSION = 1; // 私有的有静态对象 private static ChinaDb chinaDb; private SQLiteDatabase db; // 私有的构造方法; private ChinaDb(Context context) { // TODO Auto-generated constructor stub ChinaDbHelper dbHelper = new ChinaDbHelper(context, DB_NAME, null, VERSION); db = dbHelper.getWritableDatabase(); } // 获取db的公有的静态的方法; // 对于多线程访问的情况下,还是有可能产生多个实例的,加上synchronzied,保证线程安全; public synchronized static ChinaDb getInstance(Context context) { if (chinaDb == null) { chinaDb = new ChinaDb(context); } return chinaDb; }}
SQLiteOpenHelper中的代码:
package com.example.dbtest.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class ChinaDbHelper extends SQLiteOpenHelper { //创建省; public static final String CREATE_PROVINCE = "create table province(_id integer primary key autoincrement,province_name text,province_code text)"; //创建市; public static final String CREATE_CITY = "create table city(_id integer primary key autoincrement,city_name text,city_code text)"; //创建县; public static final String CREATE_COUNTRY = "create table country(_id integer primary key autoincrement, country_name text,country_code text)"; public ChinaDbHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(CREATE_PROVINCE); db.execSQL(CREATE_CITY); db.execSQL(CREATE_COUNTRY); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub }}
在使用的时候调用即可:
public class MainActivity extends Activity { private ChinaDb chinaDb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); chinaDb = ChinaDb.getInstance(this); }}
2、适配器模式
适配器模式(Adapter):使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
我们笔记本电脑,因为国家用的是220V的电压,而笔记本电脑不是。因此就有了电源适配器。这样不管多少伏,都能把电源变成需要的电压。
适用场景:listview,gridview等都离不开适配器。在 android 中常见的适配器类有: BaseAdapter 、 SimpleAdapter 等 。
3、观察者模式:
观察者模式:定义一种(一对一或者一对多)的依赖关系,让(一个)多个对象同时监听一个主题的对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自己更新自己。
4、建造器模式:
建造器模式:将一个复杂的对象的构建与它的表示分离。使同样的构建过程可以创建不同的表示意图。
dialog的创建用到了建造器模式。
2 0
- Android 开发中常用的设计模式
- Android中常用的设计模式
- android中常用的设计模式
- Android中常用的设计模式<一>
- android中最常用的设计模式
- Android中常用的设计模式
- Android开发中常用的设计模式
- Android中常用的设计模式
- Android中常用的设计原则与设计模式
- Android中常用的设计模式 --- 单例模式
- Android中常用的设计模式 --- Builder模式
- android中常用的设计模式 --- 观察者模式
- Android中常用的设计模式 --- 原型模式
- Android开发中常用的设计模式 --- 动态代理模式
- 常用的android设计模式
- 常用的android设计模式
- Android常用的设计模式
- android常用的设计模式
- Activity的启动过程
- 为了一条条的对数据库操作,怎样生成update之类的DML语句
- python 文件操作
- Goldengate 源端 dump进程无法启动报;scoket buffer size set to xxx connect failed to targetIP:7819,error
- 常用正则表达式
- android中常用的设计模式
- Android 添加Fragment到回退栈
- python数据挖掘常用包
- JCIFS
- Android OkHttp
- 数据挖掘有关模型
- BT天堂网站挂马事件后续:“大灰狼”远控木马分析及幕后真凶调查
- ubuntu共享wifi给手机使用(不使用ad-hoc)
- 获取Spring 注入容器、(注解的也可以获取bean)