文章开始借用大话设计模式中的例子说一下面向对象的思维。
“话说三国时期,曹操令百万大军攻打东吴,曹操说了一句:“喝酒唱歌,人生真爽”,一臣子为了拍马屁命令工匠刻板印刷,以便名流青史,
样张拿出来,曹操一看,不妥,当即改成对酒当歌,接着工匠连夜改版,只得全部重新改来,改完之后,曹操一看,感觉人生真爽太过直接,改为人生几何,接着工匠又要全部
改之。。。。。”
问题出在哪里呢?,因为三国时期活字印刷术还没有发明,所以要改字的时候,就必须整个模板全部重新刻,有了活字印刷术之后,只需要更改要改之字就可以!!
第一,要改只需要更改要改之字,此为可维护,第二,这些字可以在以后的使用中重复使用,这就是可复用,第三,若要加字,只需要另外刻字加入即可,这就是可扩展,
第四,字的排列顺序可以改变,可以将活字的排列顺序改变即可,这就是灵活性好!!
这就是面向对象的四个优点:可维护,可复用,可扩展,灵活性好!!
下面步入正题,说一下设计模式的简单工厂模式:
假设我们有一家水果加工厂来加工水果,加工完水果之后给每个代销店,每个代销店销售的水果种类都不一样,我们这里有苹果,香蕉,梨子等等。
我们要保证每一个代销商来到工厂之后都能拿到自己想要的水果。
首先我们要定义一个水果的基类:
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()); } }
苹果
香蕉
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/liu136313/article/details/48085859