Net设计模式之抽象工厂模式(Abstract Factory Pattern)(1)

简介:

一、抽象工厂模式简介(Bref Introduction

抽象工厂模式( Abstract Factory Pattern ),提供一个创建一系列相关或者相互依赖对象的接口,而无需制定他们的具体类。优点是:易于交换产品系列,由于具体工厂类在一个应该用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂类变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。抽象工厂的另一个优点是,它让具体的创建实例与客户端分离,客户端是通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户的代码中。

二、解决的问题(What To Solve

        常用用于解决数据访问程序,也就是说程序通过使用抽象工厂模式后,可以灵活地在不同的数据库之间切换,而不需要费时费力地改变原有程序。

三、抽象工厂模式分析(Analysis

1、抽象工厂模式结构

 
IProductA IProductA 接口: 两个产品接口,他们都有可能有两种不同的实现。
ProductA1 ProductA2 ProductB1 ProductB2 具体实现类: 对两个产品接口的具体分类的实现。
AbstractFactory 抽象类: 抽象工厂接口,它里面应该包含所有产品创建的抽象方法。
ConcreteFactory1 ConcreteFactory2 具体工厂类 :创建具有特定实现的产品对象

2、源代码

1 、产品接口 IProductA IProductB 及其两种实现
public  interface IProductA
{
    void  Show();
}
 
public  class ProductA1  : IProductA
{
    public void  Show()
     {
        Console .WriteLine(" 具体产品类{0} 展示方法。" ,this .GetType().Name);
     }
}
 
public  class ProductA2  : IProductA
{
    public void  Show()
     {
        Console .WriteLine(" 具体产品类{0} 展示方法。" this .GetType().Name);
     }
}
 
public  interface IProductB
{
    void  Insert();
}
 
public  class ProductB1  : IProductB
{
    public void  Insert()
     {
        Console .WriteLine(" 具体产品类{0} 插入方法。" this .GetType().Name);
     }
}
 
public  class ProductB2  : IProductB
{
    public void  Insert()
     {
        Console .WriteLine(" 具体产品类{0} 插入方法。" this .GetType().Name);
     }
}
 
2 抽象工厂接口 AbstractFactory, 及其 具体的工厂 AbstractFactory1 AbstractFactory2
public  abstract class AbstractFactory
{
    public abstract IProductA  CreateProductA();
    public abstract IProductB  CreateProductB();
}
 
public  class AbstractFactory1 :AbstractFactory
{
 
    public override IProductA  CreateProductA()
     {
        IProductA  productA1 = new ProductA1 ();
        return  productA1;
     }
 
    public override IProductB  CreateProductB()
     {
        IProductB  productB1 = new ProductB1 ();
        return  productB1;
     }
}
 
public  class AbstractFactory2  : AbstractFactory
{
 
    public override IProductA  CreateProductA()
     {
        IProductA  productA2 = new ProductA2 ();
        return  productA2;
     }
 
    public override IProductB  CreateProductB()
     {
        IProductB  productB2 = new ProductB2 ();
        return  productB2;
     }
}
 
3 、客户端代码
static  void  Main (string [] args)
{
    // 根据需求调用具体工厂AbstractFactory1
     AbstractFactory factory1 = new  AbstractFactory1();
     IProductA productA1 = factory1.CreateProductA();
     IProductB productB1 = factory1.CreateProductB();
     productA1.Show();
     productB1.Insert();
    Console .WriteLine("\n" );
    // 根据需求调用具体工厂AbstractFactory2
     AbstractFactory factory2 = new  AbstractFactory2();
     IProductA pr oductA2 = factory2.CreateProductA();
    IProductB productB2 = factory2.CreateProductB();
    productA2.Show();
    productB2.Insert();
 
    Console.ReadKey();
}

3、程序运行结果











本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/260392,如需转载请自行联系原作者

目录
相关文章
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
设计模式 Java 数据库连接
【设计模式】【创建型模式】工厂方法模式(Factory Methods)
一、入门 什么是工厂方法模式? 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法模式使类的实例化延迟
395 16
|
设计模式 负载均衡 监控
并发设计模式实战系列(2):领导者/追随者模式
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发设计模式实战系列,第二章领导者/追随者(Leader/Followers)模式,废话不多说直接开始~
397 0
|
设计模式 监控 Java
并发设计模式实战系列(1):半同步/半异步模式
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发设计模式实战系列,第一章半同步/半异步(Half-Sync/Half-Async)模式,废话不多说直接开始~
566 0
|
设计模式 安全 Java
并发设计模式实战系列(12):不变模式(Immutable Object)
🌟 大家好,我是摘星!🌟今天为大家带来的是并发设计模式实战系列,第十二章,废话不多说直接开始~
323 0
|
设计模式 前端开发 搜索推荐
前端必须掌握的设计模式——模板模式
模板模式(Template Pattern)是一种行为型设计模式,父类定义固定流程和步骤顺序,子类通过继承并重写特定方法实现具体步骤。适用于具有固定结构或流程的场景,如组装汽车、包装礼物等。举例来说,公司年会节目征集时,蜘蛛侠定义了歌曲的四个步骤:前奏、主歌、副歌、结尾。金刚狼和绿巨人根据此模板设计各自的表演内容。通过抽象类定义通用逻辑,子类实现个性化行为,从而减少重复代码。模板模式还支持钩子方法,允许跳过某些步骤,增加灵活性。
1005 11
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式