Factory method 模式

 /*Factory method 模式:

     * 场景:测试软件要测试多种类型的汽车。

     * 软件系统中,经常面临“某个对象”的创建工作,由于需求的变化,这个对象经常面临剧烈的变化,但是他却拥有比较稳定的接口。

     * 特点:对象变化,接口稳定。

     * 目标:提供一种封装机制,隔离这个“容易变化的对象”,从而保持系统中“其他依赖该对象的对象”不随着需求的变化而改变。

     *

     * 意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

     */

    class FactoryMethod

    {

    }

 

    public abstract class AbstractCar

    {

        public abstract void StartUp();

        public abstract void Run();

        public abstract void TurnDirection(int direction);

        public abstract void Stop();

 

    }

 

    public class HongqiCar : AbstractCar

    {

        public HongqiCar()

        { System.Console.WriteLine("HongqiCar"); }

        public override void StartUp()

        { }

        public override void Run()

        { }

        public override void TurnDirection(int direction)

        { }

        public override void Stop()

        { }

 

    }

 

    //汽车创建工厂

    abstract class AbstractCarFactory

    {

        public abstract AbstractCar CreateCar();

 

 

    }

    class HongqiCarFactory : AbstractCarFactory

    {

        public override AbstractCar CreateCar()

        {

            return new HongqiCar();

        }

 

    }

 

    //汽车测试框架,只依赖与汽车抽象工厂和汽车的抽象

    class CarTestFramework

    {

        public void BuildTestContex(AbstractCarFactory abstractCarFactory)

        {

            AbstractCar ac1 = abstractCarFactory.CreateCar();

            AbstractCar ac2 = abstractCarFactory.CreateCar();

            //可以根据传入工厂类型的创建相应类型的汽车,并得到该类汽车的多个实例,并对他们进行测试

          

        }

        public void TestStartUp(AbstractCarFactory abstractCarFactory)

        {

            //测试启动

        }

 

        public void TestRun(AbstractCarFactory abstractCarFactory){}

        public void TestTurnDirection(AbstractCarFactory abstractCarFactory) { }

        public void TestStop(AbstractCarFactory abstractCarFactory) { }

 

 

        //客户程序

        /*说明:当要增加其他种类的汽车,如DongfenCar时,只需要在新建两个类,分别继承他们的工厂。

         * DongfenCarAbstractCar

         * DongfenCarFactory:AbstractCarFactory

         * 在使用测试类的时候,改为frwk.BuildTestContex(new DongfengCarFactory());

         * Abstract Factory:解决系列对象的需求变化

         * Builder模式:解决对象部分需求变化

         * Factory Method:解决单个对象的需求变化

         * 程序输出:

         * HongqiCar

         * HongqiCar

         */

        static void Main (string[] args)

        {

            CarTestFramework frwk = new CarTestFramework();

            frwk.BuildTestContex(new HongqiCarFactory());

 

            System.Console.WriteLine("end");

 

        }

    }

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值