简单工厂

设计模式最终目的:
通过封装,继承,多态把程序的耦合降低,增加程序的复用性,可维护性,灵活性,扩展性,减少重复代码等等,把面向过程的开发方式转为面向对象,面向抽象,面向接口的开发方式。

有关设计模式的三大分类及六大原则详细介绍
代码链接

概述:
工厂模式从文字上理解工厂通常都是用于生产产品的,而对于产品的使用者是不关心生产流程的,只关心最后生产出来的产品是否是自己想要的。而在代码中工厂类通常用于实例化具体的类并返回类的实例给调用者,使得调用者不用关心这个实例化的过程是怎样的,只管自己想要什么对象就好。

特点:
1.利用工厂方法集中管理对象创建
2.修改工厂方法方便扩展
3.将创建对象和使用对象分开
4.简单工厂+ 配置文件=可配置(new classname也属于硬编码)
5.简单工厂+ 配置文件+反射=可配置可扩展

下面以司机开丰田车举栗子:

有三款丰田车类:丰田埃尔法Alphard,丰田凯美瑞 Camry,丰田卡罗拉Corolla。有相同的行为(开车)Drive()方法。
在这里插入图片描述
当司机Player需要开丰田车的上面说的的三款车时,他必须需要每款车的钥匙,即需要获取每款车的细节,但类与类之间也产生了耦合
在这里插入图片描述
当一名名为菜虚鲲的司机需要开丰田的几款车时,他需要获取对应车的钥匙(实例化具体对象,执行具体方法)才能开车
在这里插入图片描述
在这里插入图片描述

以上举栗使用什么类型new什么对象,在面向对象编程中在属于再正常不过的事。当我们遇到一大批的类属于某一范畴(好比手机厂里的不同品牌和款式的手机),并且这些类的对象实例化会有很多相关的细节(好比手机的组装,上系统),想买手机还要自己去手机厂制造才能得到手机的话,现实中不存在这样的买手机方式。手机厂就好比下面讲的简单工厂类,它提供了对象使用者获取具体对象的方法,让对象使用者不再关心对象实例化过程中的细节,只关注自己想要什么样的对象(苹果还是iphone…)即可。现实中人们去买手机也不会去手机厂直接购买,而是在网上或者手机店购买,对于程序设计来说又是另一种表现形式。

在使用简单工厂前,需要对丰田车的Drive()行为进行抽象,即提供接口,使用接口抽象行为让使用者面向抽象编程而不在面向细节。
在这里插入图片描述
在这里插入图片描述
有了接口就可以在简单工厂类的对象创建方法中实例化具体类型对象以接口类型的形式提供给对象使用者,使用者只需提供具体参数即可获得具体对象。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

上面简单工厂中需要通过枚举作为参数获取具体类型对象,也可以通过配置文件配置获取具体类型对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

也可以通过配置文件加反射实现获取具体类型对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简单工厂加配置加反射可以实现在不改代码只改配置文件的情况下对扩展的新增对象直接使用。
以菜虚鲲(司机)开改装86(扩展的对象)举例
在这里插入图片描述
将对象dll文件放入应用程序文件夹中,修改配置文件即可开86.。。。。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值