zoukankan      html  css  js  c++  java
  • C#设计模式_创建型_FactoryMethod模式(learn from Lijianzhong & others)

    意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
    适用性:

    • 当一个类不知道它所必须创建的对象的类的时候。
    • 当一个类希望由它的子类来指定它所创建的对象的时候。
    • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

    结构:

    using System;

    namespace DesignPattern
    {
     /// <summary>
     /// FactoryMethod 的摘要说明。
     /// </summary>
     public abstract class AbstractCar
     {
      public abstract void Start();
      public abstract void Run();
      public abstract void Turn(Direction direction);
      public abstract void Stop();
     }
     public class CarTestFramework
     {
      public void BuildTestContext(CarFactory carFactory)
      {
       AbstractCar c1 = carFactory.CreateCar();
       AbstractCar c2 = carFactory.CreateCar();
       AbstractCar c3 = carFactory.CreateCar();
       AbstractCar c4 = carFactory.CreateCar();
      
      }
      public void DoTest(AbstractCar car)
      {
       car.Run();
      }
      public TestData GetTestData()
      {
      
      }
     }
     public abstract class CarFactory{
      public abstract Car CreateCar();
      
     }
     public class HongqiCar: AbstractCar{
      Engine engin1;
      Engine engin2;
      Engine engin3;
      Engine engin4;
      public override void Start(){}
      public override void Run(){}
      public override void Turn(Direction direction){}
      public override void Stop(){}
     }
     public class DongfengCar : AbstractCar{
      Engine engin1;
      Engine engin2;
      public override void Start(){}
      public override void Run(){}
      public override void Turn(Direction direction){}
      public override void Stop(){}
     }
     public class HongqiCarFactory : CarFactory
     {
      public override AbstractCar CreateCar()
      {
       return new HongqiCar();
      }

     }
     public class DongfengCarFactory : CarFactory
     {
      public override AbstractCar CreateCar()
      {
       return new DongfengCar();
      }
     }

     class App
     {
      public static void Main(){   
       CarTestFramework carTestFamework = new CarTestFramework();
       carTestFamework.BuildTestContext(new HongqiCarFactory());
       CarTestFramework carTestFamework = new CarTestFramework();
       carTestFamework.BuildTestContext(new DongfengCarFactory());

       //Activator.CreateInstance(string TypeName)
      }
     }


     public class FactoryMethod
     {
      public FactoryMethod()
      {
       //
       // TODO: 在此处添加构造函数逻辑
       //
      }
      
     }
    }

  • 相关阅读:
    128-django的注册和登录【2】:注册和登录的初步实现
    127-django的注册和登录【1】:尝试使用预设的User类
    126-对已添加文章的编辑,编辑完成后呈现此文章
    125-django的标签,条件过滤
    124-django的翻页/分页功能,使用Paginator
    123-在前端添加评论,显式地指定绑定关系
    122-django不依赖后台,在前端添加文章(提交后跳转到其他页面)
    二叉树及遍历方式详解
    由一个算法引发的hash讲解
    Java基础知识总结
  • 原文地址:https://www.cnblogs.com/taoeternal/p/635869.html
Copyright © 2011-2022 走看看