• C#演示抽象工厂模式



    抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
    这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。


    抽象工厂模式包含以下几个核心角色:
    抽象工厂(Abstract Factory):声明了一组用于创建产品对象的方法,每个方法对应一种产品类型。抽象工厂可以是接口或抽象类。
    具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体产品对象的实例。
    抽象产品(Abstract Product):定义了一组产品对象的共同接口或抽象类,描述了产品对象的公共方法。
    具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。


    抽象工厂:

    1.  public abstract class AbstructFactory
    2.     {
    3.         public abstract Comptuter GetComptuter(string name);
    4.         public abstract Phone GetPhone(string name);
    5.     }


    具体工厂:
     

    1. internal class ComptuterFactory : AbstructFactory
    2.     {
    3.         public override Comptuter GetComptuter(string name)
    4.         {
    5.             Comptuter comptuter = null;
    6.             switch (name)
    7.             {
    8.                 case "Apple":
    9.                     comptuter = new AppleComptuter();
    10.                     break;
    11.                 case "Dell":
    12.                     comptuter = new DellComptuter();
    13.                     break;
    14.                 case "Lesson":
    15.                     comptuter = new LessonComptuter();
    16.                     break;
    17.             }
    18.             return comptuter;
    19.         }
    20.         public override Phone GetPhone(string name)
    21.         {
    22.             Phone phone = null;
    23.             switch (name)
    24.             {
    25.                 case "Apple":
    26.                     phone = new ApplePhone();
    27.                     break;
    28.                 case "ReMi":
    29.                     phone = new ReMiPhone();
    30.                     break;
    31.                 case "HauWei":
    32.                     phone = new HauWeiPhone();
    33.                     break;
    34.             }
    35.             return phone;
    36.         }
    37.     }
    38.  internal class PhoneFactory : AbstructFactory
    39.     {
    40.         public override Comptuter GetComptuter(string name)
    41.         {
    42.             Comptuter comptuter = null;
    43.             switch (name)
    44.             {
    45.                 case "Apple":
    46.                     comptuter = new AppleComptuter();
    47.                     break;
    48.                 case "Dell":
    49.                     comptuter = new DellComptuter();
    50.                     break;
    51.                 case "Lesson":
    52.                     comptuter = new LessonComptuter();
    53.                     break;
    54.             }
    55.             return comptuter;
    56.         }
    57.         public override Phone GetPhone(string name)
    58.         {
    59.             Phone phone = null;
    60.             switch (name)
    61.             {
    62.                 case "Apple":
    63.                     phone = new ApplePhone();
    64.                     break;
    65.                 case "ReMi":
    66.                     phone = new ReMiPhone();
    67.                     break;
    68.                 case "HauWei":
    69.                     phone = new HauWeiPhone();
    70.                     break;
    71.             }
    72.             return phone;
    73.         }
    74.     }


    抽象产品:
     

    1. public abstract class Comptuter
    2.     {
    3.         public abstract string Name();
    4.     }
    5.  public abstract class Phone
    6.     {
    7.         public abstract string Name();
    8.     }

    具体产品:
     

    1. internal class ReMiPhone : Phone
    2.     {
    3.         public override string Name()
    4.         {
    5.             return "小米手机";
    6.         }
    7.     }
    8.   internal class DellComptuter : Comptuter
    9.     {
    10.         public override string Name()
    11.         {
    12.             return "戴尔电脑";
    13.         }
    14.     }

    具体使用:
     

    1. AbstructFactory a = new ComptuterFactory();
    2.   AbstructFactory b = new PhoneFactory();
    3.   
    4.   Cp1 = a.GetComptuter("Dell").Name();
    5.   Cp2 = a.GetComptuter("Apple").Name();
    6.   Cp3 = a.GetComptuter("Lesson").Name();
    7.   
    8.   Ph1 = b.GetPhone("Apple").Name();
    9.   Ph2 = b.GetPhone("ReMi").Name();
    10.   Ph3 = b.GetPhone("HauWei").Name();

  • 相关阅读:
    html+css+javascript打造网页内容浮动导航菜单
    开发笔记 03,为什么不要问别人在做什么小产品?
    npm 内网下载 node-sass 出现的问题和解决
    PaddleSharp:跨越一年的版本更新与亮点
    RabbitMq大纲
    分布式共识协议 Raft 是如何工作的?
    python opencv实现图片清晰度增强
    Python的内置容器(堆 队列 优先队列 双向队列 栈)
    学习c语言:动态内存管理
    Microsoft Office for Mac最新版本安装教程,亲测可用!!!
  • 原文地址:https://blog.csdn.net/XiaoWang_csdn/article/details/134004299