博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#抽象工厂模式
阅读量:5731 次
发布时间:2019-06-18

本文共 1797 字,大约阅读时间需要 5 分钟。

  //创建北京抽象类

  public abstract class DaMi{

    public abstract void Print();
  }

  //创建上海抽象类

  public abstract class BaiMian {
    public abstract void Print();
  }

  //创建抽象工厂类,提供两个不同地方的的接口

  public abstract class AbstractFactory {

    public abstract DaMi CreateDaMi();
    public abstract BaiMian CreateBaiMian();
  }

  //北京工厂

  public class BeiJingFactory : AbstractFactory {

    public override DaMi CreateDaMi()
    {
      return new BeiJingDaMi();
    }

    public override BaiMian CreateBaiMian()

    {
      return new BeiJingBaiMian();
    }
  }

  //上海工厂

  public class ShangHaiFactory:AbstractFactory {

    public override DaMi CreateDaMi(){

      return new ShangHaiDaMi();

    }

    public override BaiMian CreateBaiMian(){

      return new ShangHaiBaiMian();

    }

  }

 

  public class BeiJingDaMi:DaMi{

    public override void Print(){

      Console.WriteLine("北京大米");

    }

  }

  public class BeiJingBaiMian:BaiMian{

    public override void Print(){

      Console.WriteLine("北京白面");

    }

  }

  public class ShangHaiDaMi:DaMi{

    public override void Print(){

      Console.WriteLine("上海大米");

    }

  }

  public class ShangHaiBaiMian:BaiMian{

    public override void Print(){

      Console.WriteLine("上海白面");

    }

  }

  调用:

  AbstractFactory  beijingFactory=new BeiJingFactory ();

  DaMi beijingDaMi=beijingFactory.CreateDaMi();

  beijingDaMi.Print();

  BaiMian beijingBaiMian=beijingFactory.CreateBaiMian();

  beijingBaiMian.Print();

  AbstractFactory  shanghaiFactory=new ShangHaiFactory();

  shanghaiFactory.CreateDaMi().Print();

  shanghaiFactory.CreateBaiMian().Print();

  抽象工厂模式:提供一个创建产品的接口来负责创建相关或依赖的对象,而不具体明确指定具体类

  抽象工厂对于系列产品的变化支持 “开放——封闭”原则(指的是要求系统对扩展开放,对修改封闭),扩展起来非常简便,但是,抽象工厂对于添加新产品这种情况就不支持”开放——封闭 “原则,这也是抽象工厂的缺点所在.

转载于:https://www.cnblogs.com/zwyAndDong/p/9771334.html

你可能感兴趣的文章
sql语句返回主键SCOPE_IDENTITY()
查看>>
MongoDB培训
查看>>
机器学习开源项目精选TOP30
查看>>
python基础===对字符串进行左右中对齐
查看>>
一起谈.NET技术,ASP.NET缓存全解析6:数据库缓存依赖
查看>>
代码分析系列 内存执行过程
查看>>
iOS开发-邮件发送
查看>>
/etc/resolv.conf文件详解
查看>>
【转】VC的MFC中重绘函数的使用总结(整理)
查看>>
JQuery日记_5.13 Sizzle选择器(六)选择器的效率
查看>>
System.gc()与Object.finalize()的区别
查看>>
Memcache存储大数据的问题
查看>>
HTML5区域范围文本框实例页面
查看>>
oracle查看经常使用的系统信息
查看>>
ifconfig命令
查看>>
mysql日常命令二
查看>>
函数的创建及使用时的注意事项
查看>>
解决安装SQL Server 2000提示文件挂起的一般方法
查看>>
tomcat的一个常见错误
查看>>
运维经验分享(五)-- 改进的java进程管理的服务控制脚本
查看>>