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

辽宁网站建设熊掌号自助建站免费信息发布网站

辽宁网站建设熊掌号,自助建站免费信息发布网站,大连响应式网站,大连网站建设培训前言#xff1a; 工厂模式#xff08;Factory Pattern#xff09;是一种常用的对象创建型设计模式。该模式的主要思想是提供一个创建对象的接口#xff08;也可以是抽象类、静态方法等#xff09;#xff0c;将实际创建对象的工作推迟到子类中进行。这样一来#xff0c…前言 工厂模式Factory Pattern是一种常用的对象创建型设计模式。该模式的主要思想是提供一个创建对象的接口也可以是抽象类、静态方法等将实际创建对象的工作推迟到子类中进行。这样一来客户端只需关注接口而无须了解具体的类实现实现了代码的解耦提高了系统的可维护性和扩展性。 工厂模式可以分为简单工厂模式工厂方法模式和抽象工厂模式。 简单工厂模式又叫静态工厂方法模式它是由一个工厂对象决定创建出哪一种产品类的实例但它不属于工厂模式家族它属于创建型模式但不属于23种GOF设计模式之一。 工厂方法模式提供了一个用于创建对象的接口让子类决定实例化哪一个类。工厂方法让类把实例化推迟到子类。 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口而无须指定他们具体的类。 简单工厂模式 简单工厂模式主要由三个部分组成 工厂角色Factory负责实现创建所有实例的内部逻辑抽象产品角色Product Interface是工厂类所创建所有对象的父类封装了各种产品对象的公有方法具体产品角色ConcreteProduct它是抽象产品角色的一个或多个具体角色完成具体产品的创建 简单工厂模式适合于产品数量较少且稳定客户端只需要传入工厂类的参数对于如何创建对象的逻辑不需要关心的情况。如果产品数量较多且经常变动使用简单工厂可能会导致工厂方法内部过于复杂不便于管理和维护。 抽象产品角色 创建一个动物接口有一个方法speak public interface IAinimal {void Speak(); } 具体产品角色 创建两个实现了IAnimal接口的类分别是Dog和Cat public class dog : IAinimal {public void Speak(){Console.WriteLine(汪汪汪);} }public class cat : IAinimal {public void Speak(){Console.WriteLine(喵喵喵);} } 工厂角色 创建一个简单工厂类SimpleAinimalFactory里面有一个静态方法CreateAinimal该方法接收一个字符串参数根据参数创建不同的对象 public static class SimpleAinimalFactory {public static IAinimal CreateAinimal(string type){if (cat.Equals(type)){return new cat();}else if (dog.Equals(type)){return new dog();}else{throw new Exception(Invalid animal type);}} }使用简单工厂 public static void Main(string[] args){IAinimal dog SimpleAinimalFactory.CreateAinimal(dog);dog.Speak();IAinimal cat SimpleAinimalFactory.CreateAinimal(cat);cat.Speak();} 后期如果再加新的动物我们势必要需求修改SimpleAinimalFactory的代码违反了开闭原则。 工厂方法模式 针对上例中的缺点使用工厂方法模式就可以完美的解决完全遵循开闭原则。 工厂方法模式的主要角色 抽象工厂Abstract Factory提供了创建产品的接口调用者通过它访问具体工厂的工厂 方法来创建产品。具体工厂ConcreteFactory主要是实现抽象工厂中的抽象方法完成具体产品的创建。抽象产品Product定义了产品的规范描述了产品的主要特性和功能。具体产品ConcreteProduct实现了抽象产品角色所定义的接口由具体工厂来创建它同 具体工厂之间一一对应。 抽象产品和具体产品同上不变将工厂角色抽出来改成抽象工厂具体工厂 抽象工厂 public interface IAinimalFactory {IAinimal createAinimal(); } 具体工厂 public class CatAinimalFactory : IAinimalFactory {public IAinimal createAinimal(){return new cat();} }public class DogAinimalFactory : IAinimalFactory {public IAinimal createAinimal(){return new dog();} } 使用工厂 public static void Main(string[] args){var catAinimalFactory new CatAinimalFactory();var ainimal catAinimalFactory.createAinimal();ainimal.Speak();} 与简单工厂不同的地方就是这边先获取一个对应的具体工厂再通过具体工厂拿到具体产品。在使用时用于只需知道产品对应的具体工厂关注具体的创建过程甚至不需要知道具体产品类的类名当我们选择哪个具体工厂时就已经决定了实际创建的产品是哪个了。
http://www.tj-hxxt.cn/news/224913.html

相关文章:

  • 网站建设捌金手指花总十七本地黄页小程序
  • 国际互联网网站高端网站建设设计公司排名
  • 甘肃手机版建站系统哪个好做视频网站用什么模板
  • 买国外域名 网站高端网站建设郑州
  • 网站设计价格大概多少营销网站建设联系方式
  • 21天网站建设实录pdf上海互联网seo公司
  • 设计院门户网站建设方案网站新闻对百度优化有用吗
  • 宽屏大气网站模板杭州 网站制作
  • 深圳建设资格注册中心网站WordPress手机不显示
  • 网站建设验收单格式手机php网站开发工具
  • 鞍钢节能公司网站开发设计开发网站
  • 琼海网站建设长治建立公司网站的步骤
  • 辽宁pc网站建设开发徐州制作手机网站
  • 宁波公司网站开发招聘免费建网站哪家好
  • 免费自助建站哪个网站最好企业管理培训课程安排
  • 郑州做定制网站的公司如何建立网站快捷
  • 做视频网站收费侵权吗django 网站开发视频教程
  • 个人网站搭建wordpress网站分析与优化
  • 久久网站建设专业网站建设公司兴田德润优惠吗
  • 顺德网站优化wordpress嵌入代码
  • 广告在什么网站做设计广告图用什么软件好用
  • 汽车网站建设网上海网站推广行业需求
  • 黄埭做网站团队建设优缺点
  • 用vis做的简单网站个人建站免费服务器
  • 网站建设项目补充协议石墨网站开发
  • 用 htmi5做网站网站查不到备案
  • 口碑好的镇江网站建设图标怎么在wordpress
  • 收钱码合并的网站怎么做在线作图网
  • 网站后台数据处理编辑主要是做什么的啊网上怎么自己做网站
  • 做影视网站被告怎么办阿里巴巴1688采购平台官网