当前位置: 首页 > news >正文

网站开发原理/上海优化公司

网站开发原理,上海优化公司,减肥网站模板,婚庆公司简介范文【抽象工厂模式】 抽象工厂模式是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模型,它提供了一种创建对象的最佳方式 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要…

【抽象工厂模式】

 

抽象工厂模式是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模型,它提供了一种创建对象的最佳方式

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式的指定他们的类。每个生成的工厂都能按照工厂模式提供对象

 

【介绍】

 

  • 主要解决:接口选择问题

  • 如何解决:在一个产品族里面,定义多个产品

  • 关键代码:在一个工厂里聚合多尔衮同类产品

  • 优点:1、便于交换产品系列。2、让具体的创建实例过程和客户端分离

  • 缺点:产品族拓展困难,要增加一个系列的某一产品,既要在抽象的creator里面增加代码,又要在具体的实例里面增加代码

  • 注意事项:产品族难扩展,产品等级易扩展

 

 

【实现】

 

步骤一:用户类

class User{private int _id;public int ID{get { return _id; }set { _id = value; }}private int _name;public int Name{get { return _name; }set { _name = value; }}}class Department{private int _id;public int ID{get { return _id; }set { _id = value; }}private string _deptName;public string DeptName{get { return _deptName; }set { _deptName = value; }}}

 

步骤二:接口类


 

//IUser接口interface IUser{void Insert(User user);User GetUser(int id);}//IDepartment接口,用于客户端访问,解除与具体数据库访问的耦合interface IDepartment{void Insert(Department department);Department GetDepartment(int id);}

步骤三:抽象产品类

 class SqlserverDepartment : IDepartment{public void  Insert(Department department){Console.WriteLine("在SQL中user表中增加一条新纪录");}public Department GetDepartment(int id){Console.WriteLine("在SQL根据ID得到user表一条纪录");return null;}}class SqlserverUser : IUser{public void Insert(User user){Console.WriteLine("给ACCess给user表添加一条新纪录");}public User GetUser(int id){Console.WriteLine("根据ID得到user表一条纪录");return null;}}//AccessUser类,用于访问Access的userclass AccessDepartment:IDepartment{public void Insert(Department department){Console.WriteLine("给ACCess给user表添加一条新纪录");}public Department GetDepartment (int id){Console.WriteLine("根据ID得到user表一条纪录");return null;}}class AccessUser : IUser{public void Insert(User user){Console.WriteLine("给ACCess给user表添加一条新纪录");}public User GetUser(int id){Console.WriteLine("根据ID得到user表一条纪录");return null;}}

 

步骤四:抽象工厂接口


i

nterface IFactory{IUser CreateUser();IDepartment CreateDepartment();}

步骤五:实现产品

class SqlserverFactory:IFactory{public IUser CreateUser(){return new SqlserverUser ();}public IDepartment CreateDepartment(){return new SqlserverDepartment();}}//accessFacrtory类,实现IFactory接口,实例化Accessuserclass AccessFactory:IFactory{public IUser CreateUser(){return new AccessUser();}public IDepartment CreateDepartment(){return new AccessDepartment();}}

 

步骤六:客户端代码


 

static void Main(string[] args){User user = new User();IFactory factory = new SqlserverFactory();Department dept = new Department();IUser iu = factory.CreateUser();iu.Insert(user);iu.GetUser(1);IDepartment id = factory.CreateDepartment();//此时已与具体的数据库访问解除了依赖id.Insert(dept);id.GetDepartment(1);Console.Read();}

【总结】

 

反射的格式:Assembly.Load("程序集名称").CreateInstance("命名空间.类名称")

将程序由编译时转为运行时,其中的字符串是可以写成变量,变量取值是由需求来决定的,去除了switch判断的麻烦。

 

 

http://www.jmfq.cn/news/5071195.html

相关文章:

  • 网站建设技术论坛/广州专门做网站
  • 需要找做网站的/最近几天的新闻大事
  • 网站建设电销/百度知道合伙人答题兼职入口
  • 上海信息公司做网站/企业策划推广公司
  • 备案 个人网站建设方案书/香港头条新闻
  • 怎样做网站搜索推广电话成都/百度售后服务电话
  • 网站第三方登录怎么做/百度关键词查询排名
  • 量子秘密网站怎么做/亚马逊关键词优化软件
  • 怎么样做淘宝联盟网站/杭州百度seo优化
  • 武汉网站建设培训/seo关键词排名优化怎么样
  • 罗湖附近公司做网站建设哪家便宜/域名注册信息查询whois
  • 晋中公司做网站/360收录提交入口
  • javascript 做网站/网站推广优化怎么做最好
  • 网站经营网络备案信息管理系统/最佳bt磁力搜索引擎
  • 建设网站 软件/大数据查询
  • 园林网站免费模板/百度点击软件还有用吗
  • 厦门做网站培训/百度seo学院
  • j2ee 建设简单网站/百度搜索排名优化哪家好
  • 潍坊网站建设公司有哪些内容/友情链接收录
  • 智慧团建官方网站登录/数据分析平台
  • 上海建筑设计研究院有限公司官网/灰色词网站seo
  • thinkphp 网站开发/关键词优化推广公司哪家好
  • 网站建设类的职位/东莞网站制作公司联系方式
  • 济南网站建设直播/广告位招商怎么找客户
  • 电商网站如何做多语言架构/今天热搜前十名
  • 网站设计模板中的页/自己怎么开发app软件
  • 网站建设报表明细/微信小程序怎么做店铺
  • 如何做网站手机/成都网络推广运营公司
  • 做按摩网站多少钱/seo是什么及作用
  • 视频网站建设费用明细/淘宝seo关键词的获取方法有哪些