工厂方法计模式的案例(策略模式)
简述一项技术或设计模式的原理
这个几乎是送分的,但90%的人答不出.我很不解.
第一种:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
比如:我们要做一个商店的收银系统,这个商店有普通顾客,会员,超级会员以及金牌会员的区别,针对各个顾客,有不同的打折方式,并且一个顾客每在商店消 费1000就增加一个级别,那么我们就可以使用策略模式,因为策略模式描述的就是算法的不同,以上四种顾客分别采用原价,八折,七折和半价的收钱方.
需要一个价格类(每种价格对应不同的打折方式),一个客户类(普通客户,vip客户:传入原始金额,初始普通客户,客户购买商品,就会增加它的总额,返回新的客户类,去调用价格类的打折方法)。
第二种:简单工厂模式:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。就是一个产品product类,一个工厂factory类。
首先一个新建product接口,然后2个productA和productB实现产品product类,并且有自己的生成方法A,B。在factory里面通过传入参数判断是new一个产品A还是产品B,调用生成产品的方法。 就和汽车工厂生成哪一种类型的汽车一个道理。
第三种:工厂方法模式:工厂体系依赖于产品体系,每一个工厂负责创造一种产品,这就省去了简单工厂中的elseif判断,又客户端决定实例化一个特定的工厂去创建相应的产品。
原理: 比如说造宝马车和宝骏车2种车,现在不需要传入参数判断造那种车,只需要new那种类型,通过简单工厂自己去造。需要一个车工厂接口,baojun车接口实现工厂接口,baoma车接口实现工厂,有了工厂还需要车身,车轮的接口,同样的,baojun车接口实现造车轮,车身接口,baoma车接口实现造车轮,车身。现在就完成了,需要造什么车new 什么车去实现车工厂就ok。当我们需要增加产品时,只需要增加相应的产品和工厂类,而不需要修改现有的代码。
第四种:抽象方法模式:它与工厂方法唯一的区别就是工厂的接口里是一系列创造抽象产品的方法,和一系列的抽象产品。优点:工厂方式只能创造一个系列的产 品的弊端。
工厂方法是抽象一个工厂接口(多个生产各种汽车的接口方法),再抽出实现每个种类生成汽车的类 。还要不同汽车生产配件接口,一种产品抽象出一个接口再实现不同的生产汽车配件的方法。(每种汽车配件只负责生产车轮,一种方法,新增别的配件方法不影响原来的汽车生成配件接口方法),只需要new不同的对象,调不同的生成汽车配件的方法即可。如果要增加车型,新增产品类和抽象工作接口的方法即可。