工厂模式

来源:互联网 发布:部落冲突各本升级数据 编辑:程序博客网 时间:2024/06/04 01:04

一直感觉自己不是个称职的程序员,原因在哪始终找不到,这些天经过一系列的打击之后貌似找到了一些方向,首先就是设计模式和数据结构,好了废话不多说,今天写简单工厂模式。看了好多博客和代码,借鉴了这个人的博客:http://blog.csdn.net/weiwenlongll/article/details/6918164

我觉的简单工厂模式有一个通用的图,以后大家在遇到工场的时候首先想到这个图,记住这个图,以后的路就好走了:

  简单工厂模式解决的问题是:如何去实例化一个合适的对象。

  简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。


图如下:


大家看这个图,这里有一个工场负责创建产品,通常在简单工场设计模式中会有一个产品类,这个类的作用就是给下边的具体类继承。好下面举个例子:

场景:本人程序猿一枚,有女票(大家不要羡慕),但是女票有很多闺蜜,所以必须搞定这些闺蜜,当然,请吃饭就是其中必须的一环(虽然心疼钱,但是为了女票值了),

我要请女票的三个闺蜜吃肯德基,每个人的口味不一样,当然,大家都知道这个流程,几个人到肯德基点餐,之后肯德基给你食物,然后付账就是我的事了。

大家注意几点,我并不能生产食物,当然是肯德基生产食物,我们来消费,肯德基抱恨很多食物,有鸡腿,猪肉,薯条等等,所以把这个过程抽象成上边的通用图,如下:


这样的话我们就好理解了,我们需要创建这些类:

1.Food类,get方法(假设能获得食物)

2.鸡腿类(Chicken,继承自Food)

3.薯条类(Chips,继承自Product)

4.工厂类(KFC类,最重要,生产食物)

代码实现如下:

Food类:

package SimpleFactory;public interface Food {public String getFood();// 获得食物方法}
Chicken类:

package SimpleFactory;public class Chicken implements Food{@Overridepublic String getFood() {System.out.println("获得一个鸡腿!!!");return "Chicken";}}
Chips类:

package SimpleFactory;public class Chips implements Food{@Overridepublic String getFood() {System.out.println("获得一个薯条!!!");return "Chips";}}
KFCFactory类:

package SimpleFactory;/** * 工场类:调用食物类生产食物 *  * */public class KFCFactory {public static Food createFood(String foodName){Food food = null;switch(foodName){case "Chicken":food = new Chicken();break;case "Chips":food = new Chips();break;default:food = null;}return food;}}


测试类:

package SimpleFactory;public class Test {public static void main(String[] args){KFCFactory ff = new KFCFactory();Food foodChichen = ff.createFood("Chicken");String chicken = foodChichen.getFood();Food foodChips = ff.createFood("Chips");String chips = foodChips.getFood();if(chicken == null){System.out.println("没有这个对应的工厂类!!!");}if(chips == null){System.out.println("没有这个对应的工厂类!!!");}}}



输出:

获得一个鸡腿!!!获得一个薯条!!!
这样,我们就实现了一个简单的简单工厂模式范例。刚刚入门,希望大牛们指出错误。








0 0
原创粉丝点击