zoukankan      html  css  js  c++  java
  • 应用抽象工厂+反射实现通用数据源的设计(三)

    九:UI层

    通过反射实现时,得自动添加以下的文件:

    如果要换成Access数据库时需要考入的文件:

    改配置文件:

     private StudentManager stuMgr = null;
            public Form1()
            {
                InitializeComponent();
                stuMgr = new StudentManager();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                gvStudent.DataSource = stuMgr.GetAllStudents();
            }
    
            private void btnQuery_Click(object sender, EventArgs e)
            {
                gvStudent.DataSource = stuMgr.GetStudentByName(txtName.Text);
            }
    
            private void btnAdd_Click(object sender, EventArgs e)
            {
                Student student = new Student();
                student.Sname = txtName.Text;
                student.StuAdd = txtAddr.Text;
                student.StuSex = txtSex.Text;
    
                if (stuMgr.AddStudnet(student))
                {
                    gvStudent.DataSource = stuMgr.GetAllStudents();
                }
                else {
                    MessageBox.Show("添加失败!!");
    
                }
            }
    

     总结:

    抽象工厂的优点
    1、隔离了具体类的生成,客户不需要知道怎样生成了每一个具体产品,什么时间生成的。它将客户与具体的类分离,依赖于抽象类,耦合性低。
    2、一个产品族中的多个对象被设计成一起工作,它能够保证客户端始终只使用一个产品族中的对象。这对一些需要根据当前环境来决定其行为的软件系统来说,是非常实用的一种设计模式。 
    3、它有利于更换产品系列,由于客户端只依赖于抽象类,具体类也被写到应用程序配置文件中,更换产品系列时,只须更改一下具体工厂名就行了。

    抽象工厂的缺点
            难以支持新种类的产品。难以扩展抽象工厂以生产新种类的产品。这是因为抽象工厂接口确定了可以被创建的产品集合,支持新种类的产品就需要扩展该工厂接口,这将涉及抽象工厂类及其所有子类的改变。

  • 相关阅读:
    PHP substr_compare() 函数
    Learn X in Y minutes
    类型和程序设计语言
    C++17尝鲜
    《Ensemble Methods: Foundations and Algorithms》
    周志华:“深”为什么重要,以及还有什么深的网络
    阿里毕玄:系统架构师如何做好系统设计?
    调用链监控:Dapper、Istio... etc.
    zz京东电商推荐系统实践
    zzPony.ai 的基础架构挑战与实践
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/5811736.html
Copyright © 2011-2022 走看看