Factory(创建型模式——工厂模式)

设计模式:
解决需求变动问题(在对软件或模块关系认识更深刻时使用)。
模块间耦合关系:
(耦合关系直接决定软件面对变化时的行为)
【模块划分,将变和不变的东西找到】
模块与模块之间关系
(1)紧耦合:一个模块变化,相关模块都改变
(2)松耦合:一些模块更容易被替换或更改,但其他模块保持不变
松耦合:
在这里插入图片描述
在对软件或模块深入了解后,梳理出如上的图,这样可以很明显分出软件或模块的主次关系和抽象细节关系

主模块(主逻辑):变化慢或不变【高层抽象】
次模块(接口+实现):变化快【底层细节】

工厂模式:
在这里插入图片描述
某个对象创建工作中:由于需求变化,该对象的具体实现经常面临剧烈变化,但是接口稳定。

结构(结合代码更易理解):
在这里插入图片描述
代码实现举例:
场景,车和测试车的框架
1、车抽象类:

public abstract class AbstractCar
{
    public abstract void Startup();

    public abstract void Run();

    public abstract void Turn();

    public abstract void Stop();
}

2、车抽象工厂

public abstract class CarFactory
{
    public abstract AbstractCar CreateCar();
}

3、具体红旗牌车,以及具体红旗车的工厂

public class HongQiCar:AbstractCar//具体实现车
{
    private int Speed;
    public override void Startup()
    {
    }

    public override void Run()
    {
    }

    public override void Turn()
    {
    }

    public override void Stop()
    {
    }
}

public class HongQICarFactory:CarFactory//具体工厂
{
    public override AbstractCar CreateCar()
    {
        return new HongQiCar();
    }
}

3、车测试框架

public class CarTestFramework
{
    public void BuildContext(CarFactory carFactory)//依赖接口
    {
        //需要多个实例
        AbstractCar c1 = carFactory.CreateCar();
        AbstractCar c2 = carFactory.CreateCar();
        AbstractCar c3 = carFactory.CreateCar();
    }
    public void DoTest()
    {
    }

    public void GetTestData()
    {
    }
}

4、主函数调用

public static void Main(string[] args)
{
    CarTestFramework carTestFramework = new CarTestFramework();
    carTestFramework.BuildContext(new HongQICarFactory());
}

要点:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值