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,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
3月前
|
设计模式 Java
Java设计模式-抽象工厂模式(5)
Java设计模式-抽象工厂模式(5)
|
3月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
4月前
|
设计模式 Java
Java 设计模式之谜:工厂模式与抽象工厂模式究竟隐藏着怎样的神奇力量?
【8月更文挑战第30天】在Java编程中,设计模式为常见问题提供了高效解决方案。工厂模式与抽象工厂模式是常用的对象创建型设计模式,能显著提升代码的灵活性、可维护性和可扩展性。工厂模式通过定义创建对象的接口让子类决定实例化哪个类;而抽象工厂模式则进一步提供了一个创建一系列相关或相互依赖对象的接口,无需指定具体类。这种方式使得系统更易于扩展和维护。
43 1
|
4月前
|
设计模式 XML 存储
【三】设计模式~~~创建型模式~~~抽象工厂模式(Java)
文章详细介绍了抽象工厂模式,这是一种创建型设计模式,用于提供一个接口以创建一系列相关或相互依赖的对象,而不指定它们具体的类。通过代码示例和结构图,文章展示了抽象工厂模式的动机、定义、结构、优点、缺点以及适用场景,并探讨了如何通过配置文件和反射机制实现工厂的动态创建。
【三】设计模式~~~创建型模式~~~抽象工厂模式(Java)
|
4月前
|
设计模式 Java C语言
设计模式-----------工厂模式之抽象工厂模式(创建型)
抽象工厂模式是一种创建型设计模式,它提供了一个接口用于创建一系列相关或相互依赖的对象,而无需指定具体类,从而增强了程序的可扩展性并确保客户端只使用同一产品族的产品。
设计模式-----------工厂模式之抽象工厂模式(创建型)
|
4月前
|
设计模式 存储 XML
[设计模式]创建型模式-抽象工厂模式
[设计模式]创建型模式-抽象工厂模式
|
6月前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
28天前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
|
3月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。