23种设计模式-FactoryMethod(工厂方法)设计模式

本文介绍工厂方法模式的应用,通过创建抽象基类与具体实现类,实现软件设计中对扩展开放而对修改关闭的原则,有效应对单个对象需求的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决"单个对象"的需求变化,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FactoryMethod工厂方法模式_创建型模式_
{
    //一个设计成功的工程,当需求改变时,主逻辑和接口都不需要改
    //只需要扩展你的具体实现.

    /*
     *1.Factory Method模式主要用于隔离类对象使用者和具体类型之间的耦合关系.面对一个经常变换的具体类型,紧耦合关系会导致软件的脆弱.
     *2.Factory Method模式通过面向对象手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好的解决了这种紧耦合关系.
     *3.Factory Method模式解决"单个对象"的需求变化,Abstract Factory模式解决"系列对象"的需求变化,Builder模式解决"对象部分"的希求变化.
     */



    //====================AbstractCar抽象文件===============
    public abstract class AbstractCar
    {
        public abstract void SatrtUp() { }
        public abstract void Run() { }
        public abstract void Turn() { }
        public abstract void Stop() { }
    }
    //======================================================


    //=====================HongQiCar实例文件================
     public class HongQiCar:AbstractCar{
         public override void SatrtUp() {
             Console.WriteLine("红旗UP");
         }

         public override void Run() {
             Console.WriteLine("红旗Run");
         }

         public override void Turn() {
             Console.WriteLine("红旗Turn");
         }

         public override void Stop() {
             Console.WriteLine("红旗Stop");
         }
     
     }
    //======================================================


    //添加CarFactory抽象类这样就实现了对扩展开放对,修改关闭的原则
    //===============CarFactory(汽车工厂抽象方法)抽象文件===
    public abstract class CarFactory {
        public abstract AbstractCar CreateCar();
    }
    //========================================================



    //=======HongQiCarFactory(红旗汽车工厂实例方法)文件=======
    public class HongQiCarFactory:CarFactory{
      public override AbstractCar CreateCar(){
         return new HongQiCar();
      }
    }
    //========================================================


    //=============CarTestFramework文件=======================
    //汽车测试框架
    class CarTestFramework
    {
        //构建测试环境 假设测试环境不确定要几个car对象
        //有了工厂方法就可以解决这个问题.,
        public void BuildTestContext(CarFactory _carfactory)
        {
            AbstractCar c1 = _carfactory.CreateCar();
            AbstractCar c2 = _carfactory.CreateCar();
            AbstractCar c3 = _carfactory.CreateCar();
        }
    }
    //========================================================


    class Program
    {
        static void Main(string[] args)
        {
            CarTestFramework testFramework = new CarTestFramework();
            //这个地方想要测试别的汽车的时候就不需要修改框架了,
            //直接添加几个类,继承抽象类就可以了.
            testFramework.BuildTestContext(new HongQiCarFactory());
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值