大话设计模式之--简单工厂模式
来源:互联网 发布:淘宝上的福袋能买吗 编辑:程序博客网 时间:2024/06/08 14:27
文章开始借用大话设计模式中的例子说一下面向对象的思维。
“话说三国时期,曹操令百万大军攻打东吴,曹操说了一句:“喝酒唱歌,人生真爽”,一臣子为了拍马屁命令工匠刻板印刷,以便名流青史,
样张拿出来,曹操一看,不妥,当即改成对酒当歌,接着工匠连夜改版,只得全部重新改来,改完之后,曹操一看,感觉人生真爽太过直接,改为人生几何,接着工匠又要全部
改之。。。。。”
问题出在哪里呢?,因为三国时期活字印刷术还没有发明,所以要改字的时候,就必须整个模板全部重新刻,有了活字印刷术之后,只需要更改要改之字就可以!!
第一,要改只需要更改要改之字,此为可维护,第二,这些字可以在以后的使用中重复使用,这就是可复用,第三,若要加字,只需要另外刻字加入即可,这就是可扩展,
第四,字的排列顺序可以改变,可以将活字的排列顺序改变即可,这就是灵活性好!!
这就是面向对象的四个优点:可维护,可复用,可扩展,灵活性好!!
下面步入正题,说一下设计模式的简单工厂模式:
假设我们有一家水果加工厂来加工水果,加工完水果之后给每个代销店,每个代销店销售的水果种类都不一样,我们这里有苹果,香蕉,梨子等等。
我们要保证每一个代销商来到工厂之后都能拿到自己想要的水果。
首先我们要定义一个水果的基类:
package com.panther.dong.designpattern.simpleFactory;/** * fruit class * Created by panther on 15-8-29. */public class Fruit { private String name;//水果名字 public Fruit(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFruit() { return this.name; }}
定义了水果名字属性,再分别定义苹果类和香蕉类,如下所示:
package com.panther.dong.designpattern.simpleFactory;/** * apple pojo * Created by panther on 15-8-29. */public class Apple extends Fruit { public Apple() { super("苹果"); } @Override public String getFruit() { return this.getName(); }}
不同的代销商来工厂取得不同的水果,
package com.panther.dong.designpattern.simpleFactory;/** * fruit factory * Created by panther on 15-8-29. */public class FruitFactory { public static Fruit getFruit(String name) { Fruit fruit = null; switch (name) { case "apple": fruit = new Apple(); break; case "banana": fruit = new Banana(); break; default: break; } return fruit; } public static void main(String[] args) { Fruit fruit = FruitFactory.getFruit("apple"); System.out.println(fruit.getFruit()); Fruit fruit1 = FruitFactory.getFruit("banana"); System.out.println(fruit1.getFruit()); }}
输出结果:
苹果
香蕉
0 0
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之--简单工厂模式
- 大话设计模式之简单工厂模式
- 《大话设计模式》之简单工厂模式
- 大话设计之简单工厂模式
- 大话设计模式读书笔记之简单工厂
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 大话设计模式之简单工厂模式&工厂方法模式&抽象工厂模式
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 大话设计模式之C++实现---简单工厂模式
- 大话设计模式学习之简单工厂模式
- 大话设计模式之简单工厂模式代码
- 大话设计模式之——简单工厂模式
- 大话设计模式之简单工厂模式和概念介绍
- <一>读<<大话设计模式>>之简单工厂模式
- Android viewPager.setOnPageChangeListener()方法过时怎么办
- NGUI_2.6.3_教程四(自定义Atlas,Font)
- UI10_TableView的编辑
- poj 1113 Wall Andrew
- 平庸是因为没有激发潜能
- 大话设计模式之--简单工厂模式
- NGUI_2.6.3_教程五(角色信息跟随)
- 1026. Table Tennis (30)
- c liuchengkongzhi
- 关于css的优先级
- AJAX与spring mvc交互
- uvalive5989(水题)
- 线程池的简单Demo
- NGUI_2.6.3_系列教程六(序列帧动画)