前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之工厂方法模式

设计模式之工厂方法模式

作者头像
beginor
发布2020-08-10 14:25:08
2660
发布2020-08-10 14:25:08
举报

设计模式之工厂方法模式

结构

工厂方法模式
工厂方法模式

说明

Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses .

定义一个接口用于创建对象,但是让子类决定初始化哪个类。工厂方法把一个类的初始化下放到子类。

适用条件

当一个类不知道它所必须创建对象的类或一个类希望由子类指定它所创建的对象时, 可以采用工厂方法。

实现

代码语言:javascript
复制
abstract class MazeGame {

   private readonly IList<Room> _rooms = new List<Room>();
   
   protected MazeGame() {
      var room1 = this.MakeRoom();
      var room2 = this.MakeRoom();
      room1.Connect(room2);
      this.AddRoom(room1);
      this.AddRoom(room2);
   }

   private void AddRoom(Room room) {
      this._rooms.Add(room);
   }

   protected abstract Room MakeRoom();

}

class MagicMazeGame : MazeGame {

   protected override Room MakeRoom() {
      return new MagicRoom();
   }
}

class Room {

   private Room _next;

   public void Connect(Room other) {
      this._next = other;
   }
}

class MagicRoom : Room {
   
}

class Program {
   
   static void Main(string[] args) {

      MazeGame game = new MagicMazeGame();

      Console.ReadKey();
   }
}

.Net Framework 之中, Ado.Net 的 IDbConnection 的 CreateCommand 方法, 可以说是典型的 工厂方法模式。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设计模式之工厂方法模式
    • 结构
      • 说明
        • 适用条件
          • 实现
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档