Love it or leave it资料

本文主要介绍Love it or leave it资料 方法和在新技术下所面对的“挑战”,方便大家深入理解Love it or leave it资料 过程。本文也将分享Love it or leave it资料 所遇到的问题和应对策略,怎么解决怎么做的问题。
通过深入本文可以理解代码原理,进行代码文档的下载,也可以查看相应 Demo 部署效果。

设计模式中的各种工厂

设计模式中的那些工厂

Intro

设计模式中有几个工厂模式,聊一聊这几个工厂模式的各自用法和使用示例,工厂模式包含简单工厂,抽象工厂,工厂方法,这些均属于创建型模式,
所谓创建型模式,就是说这几个设计模式是用来创建对象的。

简单工厂

首先来说一说,最简单的简单工厂

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例

严格的来说,简单工厂模式是工厂模式家族中最简单实用的模式,但不属于23种 GOF 设计模式之一。因为每次要新增类型的时候必须修改工厂内部代码,不符合开闭原则。

来看一个例子:

public class OperationFactory {     public static Operation CreateOperation(string operate)     {         Operation operation = null;         switch (operate)         {             case "+":                 operation = new OperationAdd();                 break;              case "-":                 operation = new OpertaionSub();                 break;              case "*":                 operation = new OperationMul();                 break;              case "/":                 operation = new OperationDiv();                 break;         }         return operation;     } } 

这是一个简单的计算器的示例,支持简单的加减乘除操作,如果要增加一个操作的话就必须要有增加一个 switchcase 分支,需要修改 CreateOperation 方法不能满足对扩展开放对修改关闭的开闭原则,所以普遍地认为简单工厂不属于设计模式之一,但是我觉得有时候简单的业务处理用简单工厂还是比较方便的。

抽象工厂

抽象工厂模式,提供一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

实现抽象工作模式所需要的组件,主要部分:

  • 抽象工厂/抽象产品
  • 具体工厂1/具体产品1
  • 具体工厂2/具体产品2

在客户端根据不同的配置选择不同的工厂,例如根据配置的数据库类型的不同选择使用 Access 数据库仓储的工厂还是使用 SqlServer 数据库的仓储工厂

示例:

IDbFactory factory = new AccessFactory(); var userRepo = factory.CreateUserRepo(); userRepo.Insert(null); var departmentRepo = factory.CreateDepartmentRepo();  factory = new SqlServerFactory(); userRepo = factory.CreateUserRepo(); userRepo.Insert(null); 

工厂方法

工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现客户端的操作,也会存在着选择判断的问题,不过和简单工厂相比,简单工厂的选择判断是在工厂内部,而工厂方法则将选择判断转移到了客户端。

示例:

ILeifengFactory factory = new UndergraduteFactory(); var studentLeifeng = factory.CreateLeifeng(); studentLeifeng.BuyRice();  factory = new VolunteerFactory(); var leifeng1 = factory.CreateLeifeng(); leifeng1.Sweep(); 

More

工厂模式的作用无外乎下面这四个。这也是判断要不要使用工厂模式的最本质的参考标准。

  • 封装变化:创建逻辑有可能变化,封装成工厂类之后,创建逻辑的变更对调用者透明。
  • 代码复用:创建代码抽离到独立的工厂类之后可以复用。
  • 隔离复杂性:封装复杂的创建逻辑,调用者无需了解如何创建对象。
  • 控制复杂度:将创建代码抽离出来,让原本的函数或类职责更单一,代码更简洁。

工厂方法和抽象工厂的区别

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类
抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类
区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品等级结构的。

抽象工厂关键在于产品之间的抽象关系,所以一般至少要两个产品;工厂方法在于生成产品,不
Love it or leave it资料部分资料来自网络,侵权毕设源码联系删除

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » Love it or leave it资料

提供最优质的资源集合

立即查看 了解详情