中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
代理模式初步实践
作者:未知 时间:2004-12-09 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

       以前在一个网站上看到过一篇文件说,有一个很有名的JAVA论坛把所有与后台的管理都写入到一个代理类中,但操作到来时,对只与这个类打交道。后来查了一个设计模式的词典,发现代理模式的定义如下:当需要将一个复杂的对象或创建时比较花费时间的对象表示成一个简单对象时,可以使用代理模式(Proxy Pattern)。如果创建一个对象比较浪费时间或浪费计算机资源,Proxy允许将创建过程推迟到需要该实际对象的时候。Proxy对象通常具有和它所代表的对象一样的方法,一旦对象被调入,就把调用方法从Proxy传递给实际对象。
       由于本人对设计模式只是刚入道不久,为了加深一下理解,特写出与上面论坛中相类似的精简版的代理模式,为了方便,把它们与后台的操作一起封在一个名字空间下,但想必大家都知道这样的后果[实际工作中千万别这样]

文件名:Proxy.cs
using System;
using System.Data.OleDb;
using clubstar.IPlug.DataOp;

namespace clubstar.DataOp
{
 
 /// <summary>
 ///  Authority_Identify_Proxy 的摘要说明。
 ///  权限识别代理类采用PROXY设计模式,当系统管理员对数据表admin进行操作时,
 ///  会通过该代理来进行相关的操作
 /// </summary>
 
 public interface Authority_Identify 
 {
  bool isSystem_Admin(string name,string password);
  bool Change_Name(string name,string password,string newname);
  bool Change_Password(string name,string password,string newpassword) ;
  bool Delete_Admin(string name,string password) ;
  OleDbDataReader Select_Admin(string name,string password) ;
 }
 

 //将会被代理的类
 public class Admin:Authority_Identify
 {
  private ConnDB_Op UserTable=ConnDB_Op.Instance();
  private OleDbDataReader dr;

  private static Admin admin = null;     //采用单体模式进行操作
  public static Admin Instance()
  {
   if (null == admin)
    admin = new Admin();
   return admin;
  }

  public  bool isSystem_Admin(string name,string password)
  {
         dr=UserTable.ExecuteReader("select * from admin where name='"+name.Trim()+"' and password='"+password+"' and rank=1");
   if  (dr.HasRows)
    return true;
   else
    return false;
  }

  public bool Change_Name(string name,string password,string newname)
  {
   if (isSystem_Admin(name,password))
   {
              UserTable.ExecuteReader("update admin set name='"+newname.Trim()+"' where name='"+name.Trim()+"'");
    return true;
   }
   else
   {
    return false;
   }
  }

  public bool Change_Password(string name,string password,string newpassword)
  {
   if (isSystem_Admin(name,password))
   {
              UserTable.ExecuteReader("update admin set password='"+newpassword.Trim()+"' where name='"+name.Trim()+"'");
    return true;
   }
   else
   {
    return false;
   }
  }

  public bool Delete_Admin(string name,string password)
  {
   if (isSystem_Admin(name,password))
   {
              UserTable.ExecuteReader("delect from admin where name='"+name.Trim()+"'");
    return true;
   }
   else
   {
    return false;
   }
  }

  public OleDbDataReader Select_Admin(string name,string password)
  {
   if (isSystem_Admin(name,password))
     dr=UserTable.ExecuteReader("select * from admin where name='"+name.Trim()+"'");
   return dr;
  }
 }


 //代理类:
 public class AdminProxy
 {
  public Admin admin=Admin.Instance();
  public string _name,_password;
  public AdminProxy(string name,string password)
  {
   this._name=name;
   this._password=password;
  }
  /* 管理整个系统的级别 */
  public static  int SYSTEM_ADMIN = 1;
  
  public bool Change_Name(string newname)
  {
            return admin.Change_Name(this._name,this._password,newname.Trim());
  }

  public bool Change_Password(string newword)
  {
   return admin.Change_Password(this._name,this._password,newword);
  }

  public bool Delete_Admin()
  {
   return admin.Delete_Admin(this._name,this._password);
  }

  public OleDbDataReader Select_Admin()
  {
   return admin.Select_Admin(this._name,this._password);
  }

 }

}

实际调用时只需要声明如下即可:
AdminProxy test=new AdminProxy("1","1");
test.Change_Password("1");

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有