C

雅轩聊科技 2024-07-11 20:11:25

哈喽,你好啊,我是雷工!

01 应用场景

在项目的多数据库支持上、业务的多算法封装、以及各种变化的业务中;

02 抽象工厂组成

抽象工厂包括抽象产品(即业务接口,可以通过抽象类或抽象接口设计)、实体产品(子类或实现类)、抽象工厂(业务接口和接口实现关联);

03 效果演示

当把配置文件改为1时,调用第1组里面的对象,返回结果1000;

当把配置文件改为1时,调用第1组里面的对象,返回结果2000;

04 准备工作

4.1、新建解决方案

创建新项目,添加空白解决方案

配置新解决方案的名称

4.2、添加应用

添加一个控制台程序(便于练习,其他应用均可以)

配置项目名称:LeiGongUI

4.3、添加类库

添加Models类库

4.4、添加类

在Models类库下添加相关类,然后创建个解决方案文件夹Other,将LeiGongUI和Models均移到Other文件夹内;

以上为非接口的准备工作,接下来开始主要的抽象工厂相关的内容创建

05 抽象工厂实现步骤

5.1、添加业务接口(抽象产品)

添加多少结构根据实际项目需要,此处练习添加两个;

创建类库:IBizLogicInterface

并添加两个接口

IEagleLogic,IPandalLogic

5.2、添加引用

在IBizLogicInterface中添加Models的引用;

5.3、添加业务实现(具体产品)

即具体产品,具体有多少产品,取决于有多少业务接口;

第一组:BizInterfaceImpl1

EagleLogiclmpl , OandaLogivlmpl

第二组:BizInterfaceImpl2

EagleLogiclmpl , OandaLogivlmpl

需添加的引用Models、IBizLogicInterface

注意事项:

无论添加多少组,每一组的实现类一定要同名,但是命名空间不同名

5.4、抽象工厂方法的编写

要解决的问题,从不同的实体产品中选择我们需要的一组实体产品,即接口实现类;

如何选择不同的产品,可以把需求配置到配置文件中

<appSettings>

<add key="bizName" value="BizInterfaceImpl1"/>

</appSettings>

需要添加引用:接口模块、

5.5、使用业务接口

添加引用:

接口模块、

实体模块

抽象工厂模块

接口实现模块(此处为了开发调试的方便性,可以把实现类的模块添加引用,项目开发调试完成后,再删除引用)

总结:

当配成第一组实现类时,调用的对象全部是第一组里面的对象;

当配成第二组实现类时,调用的对象全部是第二组里面的对象;

06 后记

通过以上练习了解到以下几点:

①抽象工厂设计模式需要哪些模块;

②注意各个模块之间的引用关系;

③该模式的本质 还是接口多态的应用;

0 阅读:0

雅轩聊科技

简介:感谢大家的关注