Criar Repositório

Bom dia!

Estou dando uma lida de como criar repositório para lidar com as instruções SQL.

Pelo que li, isto facilita bastante a organização e a flexibilidade do sistema.

Alguém teria algum exemplo, artigo ou tutorial de como criar?

Estou desenvolvendo o meu sistema da seguinte forma, porém não estou achando muito flexível.

Utilizo o padrão MVC.

Exemplo : Classe Dao


package br.com.mylims.model;

import br.com.mylims.bean.Usuario;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class UsuarioDao extends SQLiteOpenHelper{
	
	private static final String NOME_BANCO = "teste_usu"; 
	private static final String TABELA = "USUARIO";
	private static final int VERSION = 1;
	private static final String[] COLS = {"CDUSUARIO","NMUSUARIO","EMAIL","LOGIN","SENHALOGIN","SERVIDORSMTP","SERVIDORPOP3","SENHAEMAIL","EMAILSERVER"};
	
	private static final String CATEGORIA = "coleta";
	
	
	public UsuarioDao(Context context) {
		super(context, NOME_BANCO, null, VERSION);
		
	}
	
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		
		String sql = "CREATE TABLE " + TABELA + " (CDUSUARIO INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
				"NMUSUARIO VARCHAR(250) NOT NULL, " +
				"EMAIL VARCHAR(250) NOT NULL, " +
				"LOGIN VARCHAR(250) NOT NULL, " +
				"SENHALOGIN VARCHAR(250) NOT NULL, " +
				"SERVIDORSMTP VARCHAR(250) NULL, " +
				"SERVIDORPOP3 VARCHAR(250) NULL, " +
				"SENHAEMAIL VARCHAR(250) NULL, " +
				"EMAILSERVER VARCHAR(250) NULL);";
		
		db.execSQL(sql);
		
	}
	
	
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVErsion, int newVersion) {
		
		db.execSQL("TABLE IF EXISTS " + UsuarioDao.TABELA);
		this.onCreate(db);
		
	}
	


	public boolean inserir(Usuario usuario){
		
		try {
			
			ContentValues valores = new ContentValues();
			
			/**SETA OS VALORES NAS COLUNAS DO BANCO**/
			
			valores.put("NMUSUARIO", usuario.getNome());
			valores.put("EMAIL", usuario.getEmail());
			valores.put("SENHAEMAIL", usuario.getSenhaEmail());
			valores.put("LOGIN", usuario.getLogin());
			valores.put("SENHALOGIN", usuario.getSenha());
			valores.put("SERVIDORSMTP", usuario.getServidorSMTP());
			valores.put("SERVIDORPOP3", usuario.getServidorPOP3());
			valores.put("SENHAEMAIL", usuario.getSenhaEmail());
			valores.put("EMAILSERVER", usuario.getEmailServer());
			
					
			//ABRE O BANCO PARA O MODO ESCRITA
			
			getWritableDatabase().insert(TABELA, null, valores);
			
			Log.i(CATEGORIA, "LOG: dados cadastrados com sucesso!");
								
			return true;
			
		} catch (Exception e) {

			Log.e(CATEGORIA, "erro metodo inserir usuario" + e);
			return false;
			
		}
		
		
	}
	
	
	public boolean isUsuario(String login, String senha){
		
		try {
			
						
		       String[] args = new String[]{login, senha};    
		       Cursor c = getWritableDatabase().query(TABELA, COLS,"LOGIN = ? AND SENHALOGIN = ?", args, null, null, null);
		   
		
			if (c.getCount() > 0) {
								
				
				Log.i(CATEGORIA, "OK: usuário correto!");
				return true;
				
			} else {
				
				
				Log.i(CATEGORIA, "MENSAGEM DE LOG: não existe usuários cadastrado com estes dados!" + c);
				return false;
			}
			
			
		} catch (Exception e) {
			return false;
		}
		
	}
	

}