zoukankan      html  css  js  c++  java
  • Winform 三层架构小例子

        在web开发中常常用到工厂模式三层架构,现在也在Winform中应用这种架构方式,尝试了很多,也模仿了经典例子PetShop,但是还是不行,也参 考了网上的一些例子。现在把我这个例子的整个制作过程简单的介绍一下。(由于本例子是介绍三层结构,所以只是简单的应用,如果你觉得这种方式好,请自己实 现其他模块)
    结构:
    -------PMIS--------主程序代码
    表示层,负责应用程序的表现形式、用户体验等。
    -------DALFactory-----抽象工厂
    抽象工厂,用于创建各种数据对象的方法,这里有配置文件和反射的运用。
    -------IDAL--------数据接口层(控制是选择什么类型的数据库)
    数据操作接口,数据访问层实现其接口并重写它(体现了面向接口的编程思想)。
    -------BLL------
    处理应用程序的业务逻辑,被表示层调用。
    -------Model-------构造模型(对应数据库字段)
    Model程序集,存放实体类,用于数据访问层和逻辑层调用
    -------SQLServerDAL----SQLServer数据访问层
    数据访问层,实现具体的select、update、delete....操作,重写IDAL接口。
    -------DBUtility----公共数据访问层
    数据处理层,实现具体的ExecuteReader,ExecuteDataTable,ExecuteNonQuery等。
    -------Utility----公共层
    实现从配置文件中读取数据库联接字符串。
    1、数据库结构
    数据库名PMIS
    表Admin
        [ID] [bigint] 编号
        [Name] [varchar](10) 名称
        [PassWord] [varchar](100) 密码
        略......
    建表语句
    CREATE TABLE [dbo].[Admin](
        [ID] [bigint] IDENTITY(1,1) NOT NULL,
        [Name] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
        [PassWord] [varchar](100) COLLATE Chinese_PRC_CI_AS NOT NULL,
        [PurviewID] [int] NOT NULL,
        [Remember] [int] NULL,
        [AutoRun] [int] NULL,
        [DepartmentsID] [bigint] NULL,
     CONSTRAINT [PK_管理员_1] PRIMARY KEY CLUSTERED
    (
        [ID] ASC
    ) ON [PRIMARY]
    ) ON [PRIMARY]
    2、接着建立数据库模型
    Model
     #region 内部成员字段
            private int _id;
            private string _Name;
            private string _Password;
            略...
    #endregion
    #region 方法
            public AdminInfo() { }

            public AdminInfo(string userName, string password)
            {
                this._Name = userName;
                this._Password = password;
            }
    #endregion
    3、建立DALFactory-----抽象工厂
    public static IDAL.IAdmin Create()
            {
                string path=System.Configuration.ConfigurationSettings.AppSettings["DAL"];
                string className="SQLServerDAL.Admin";

                IDAL.IAdmin acount=(IDAL.IAdmin)Assembly.Load(path).CreateInstance(className);
                return acount;
            }
    4、建立IDAL--------数据接口层
    public interface IAdmin
        {
            AdminInfo Login(string userName, string password);
            int Insert(AdminInfo account);
            int Update(AdminInfo account);
        }
    5、建立Utility----公共层
    public static string ConnectionString()
            {
                return (ConfigurationSettings.AppSettings["ConnectionString"]);
            }
    6、建立DBUtility----公共数据访问层和SQLServer数据访问层
    DBUtility中建立SQLHelper类
    SQLServerDAL的Admin类需要继承IAdmin
    public class Admin:IAdmin
        {}
    Admin类主要实现用户登陆功能
    7、建立业务逻辑曾BLL
    方法public static AdminInfo Login(string userName, string password){}
    8、为PMIS主程序添加应用程序配置文件app.config
    添加<appSettings>
        <add key="ConnectionString" value="server=.;uid=sa;pwd=;database=PMIS"></add>
        <add key="DAL" value="SQLServerDAL"></add>
      </appSettings>
    在主程序的窗体中添加控件,为按钮添加事件
    if (BLL.Admin.Login(参数) == null)
                {
                   //处理...
                }
                else
                {
                    //处理...
                }
    例子代码下载
  • 相关阅读:
    poj 1113 Wall 凸包的应用
    NYOJ 78 圈水池 (入门级凸包)
    Monotone Chain Convex Hull(单调链凸包)
    poj Sudoku(数独) DFS
    poj 3009 Curling 2.0(dfs)
    poj 3083 Children of the Candy Corn
    Python join()方法
    通过FISH和下一代测序检测肺腺癌ALK基因融合比较
    华大病原微生物检测
    NGS检测ALK融合大起底--转载
  • 原文地址:https://www.cnblogs.com/hakuci/p/1136887.html
Copyright © 2011-2022 走看看