zoukankan      html  css  js  c++  java
  • 09-抽象工厂

    1. 简介

      与工厂方法的区别: 工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码,而工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性。
      但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了,一个工厂创建一系列的产品,如果我们要设计这样的系统时,工厂方法模式显然在这里不适用,然后抽象工厂模式却可以很好地解决一系列产品创建的问题。

    2. 模拟场景

         上帝(工厂)不但要造人,还要各种衣服 ,不同类别的人传的衣服不同, 抽象出一个共同的工厂,约束公共的行为,其他工厂继承他。

    1    public abstract class AbstractFactory
    2     {
    3         public abstract IPeople CreatePeople();
    4         public abstract ICloses CreateClose();
    5 
    6     }
     1  public class ChineseFactory : AbstractFactory
     2     {
     3         public override ICloses CreateClose()
     4         {
     5             return new Close1();
     6         }
     7 
     8         public override IPeople CreatePeople()
     9         {
    10             return new Chinese();
    11         }
    12     }
     1   public class JanpaneseFactory : AbstractFactory
     2     {
     3         public override ICloses CreateClose()
     4         {
     5             return new Close3();
     6         }
     7 
     8         public override IPeople CreatePeople()
     9         {
    10             return new Janpanese();
    11         }
    12     }
     1  public class AmericaFactory : AbstractFactory
     2     {
     3         public override ICloses CreateClose()
     4         {
     5             return new Close2();
     6         }
     7 
     8         public override IPeople CreatePeople()
     9         {
    10             return new America();
    11         }
    12     }
     1   static void Main(string[] args)
     2         {
     3             {
     4                 AbstractFactory ab1 = new ChineseFactory();
     5                 IPeople iPeople1 = ab1.CreatePeople();
     6                 ICloses iClose1 = ab1.CreateClose();
     7                 iPeople1.Eating();
     8                 iClose1.showClose();
     9             }
    10 
    11             {
    12                 AbstractFactory ab1 = new AmericaFactory();
    13                 IPeople iPeople1 = ab1.CreatePeople();
    14                 ICloses iClose1 = ab1.CreateClose();
    15                 iPeople1.Eating();
    16                 iClose1.showClose();
    17             }
    18 
    19             {
    20                 AbstractFactory ab1 = new JanpaneseFactory();
    21                 IPeople iPeople1 = ab1.CreatePeople();
    22                 ICloses iClose1 = ab1.CreateClose();
    23                 iPeople1.Eating();
    24                 iClose1.showClose();
    25             }
    26             Console.ReadKey();
    27 
    28         }
  • 相关阅读:
    [转]Flex PieChart
    Flash Builder 4 下载
    [转]Android如何防止apk程序被反编译
    [转]自定义Spinner五步走
    [转]coolpad 获得 root
    [转]c# .net 用程序画图 曲线图
    android ContentProvider 遭遇 failed to find provider info
    [转]如何把多个Android Project打包成一个APK
    android loading界面 及 处理
    [转]android中生成和使用jar 分享
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/7138176.html
Copyright © 2011-2022 走看看