zoukankan      html  css  js  c++  java
  • c#抽象工厂模式

      //创建北京抽象类

      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();

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

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

  • 相关阅读:
    我已经迷失在事件环(eventloop)中了【Nodejs篇】
    canvas练手项目(二)——各种操作基础
    canvas练手项目(三)——Canvas中的Text文本
    canvas练手项目(一)——选取图片
    迭代器,生成器(generator)和Promise的“微妙”关系
    通过HTTP的HEADER完成各种骚操作
    这份Koa的简易Router手敲指南请收下
    KOA的简易模板引擎实现方式
    扒一扒PROMISE的原理,大家不要怕!
    参考KOA,5步手写一款粗糙的web框架
  • 原文地址:https://www.cnblogs.com/zwyAndDong/p/9771334.html
Copyright © 2011-2022 走看看