C#交流俱乐部

学习为主,互相帮助

博客园 首页 新随笔 联系 订阅 管理
代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Data;
//----------
using Common;
using dataAccess;
using provider;
using modle;

namespace Common
{
    
public class TestSingle<T> where T : classnew()
    {
//通用的单一实例类基类,BusinessProvider继承此类
        private static T _Instance;
        
public static T Instance
        {
            
get
            {
                Interlocked.CompareExchange
<T>(ref _Instance, new T(), null);
                
return _Instance;
            }
        }

    }
}
namespace dataAccess
{
    
public abstract class BusinessProvider<K> : TestSingle<K> where K : BusinessProvider<K>new()
    {
// 定义个抽象类 
        protected abstract string Database { get; }
        
public void Delete(DataRow entity)
        {

        }
    }
}
namespace provider
{
//数据操作,继承自抽象类
    public class UserInfoProvider : dataAccess.BusinessProvider<UserInfoProvider>
    {
        
public modle.userinfo GetUserInfo()
        {
            modle.userinfo info 
= new modle.userinfo();
            
return info;
        } 
    }
}

namespace Service
{
//调用数据操作类
    public static class UserService
    {
        
public static modle.userinfo getInfo()
        {//这里Instance.就可以象用使用NET的封装方法那样,直接点出GetUserInfo
            
return provider.UserInfoProvider.Instance.GetUserInfo();
        }

    }
}

namespace modle
{
    
public class userinfo
    {
        
private int _uid;
        
public int uid
        {
            
get { return _uid;}
            
set {_uid=value;}
        }
        
private string _uname;
        
public string  username
        {
            
get { return _uname; }
            
set { _uname = value; }
        }
    }
}

以前没有这么多逻辑来实现,一般也就bll dal model 三层,再复杂就加抽象工厂及接口  辅助工具类加个,一般也就这种模式

今天在研究一个没接触过的项目代码,Instance.GetUserInfo 这个方法吸引了我,很好奇他的实现。

于是花了一下午时间去剥离其流程,把主要的代码结构分享给大家

posted on 2010-07-10 18:22  bluce chen  阅读(281)  评论(3编辑  收藏  举报