美文网首页Java设计模式
写给女朋友的设计模式之1-简单工厂模式

写给女朋友的设计模式之1-简单工厂模式

作者: lyn0130 | 来源:发表于2017-05-21 18:26 被阅读84次

假如你有一个爱吃樱桃 草莓 芒果 桑葚的女朋友,总不能想吃樱桃的时候就去种樱桃,想吃桑葚的时候就去种桑葚吧。那有什么好办法去解决这个棘手的问题呢,你可以去承包一个水果工厂,里面专设樱桃 草莓 芒果 桑葚四条生产线,想吃哪种水果,就让工厂生产,一包满足你要求的水果就立马生产出来了。另外如果哪天想吃其他水果了,在水果工厂里新开生产线就解决了。

以上是简单工厂模式的产生的来源,抽象的说就是,用一个单独的类来做创造实例的过程。

一个简单工厂产生的过程

  1. 樱桃 草莓 芒果 桑葚是四种水果,他们有一个共同的父类水果
    <pre>
    // 水果抽象类
    public abstract class Fruit{
    public void sayName();
    }
    </pre>
  2. 樱桃 草莓 芒果 桑葚四种具体的水果类
    <pre>
    // 樱桃
    public class Cherry extends Fruit{
    @Override
    public void sayName(){
    System.out.println("樱桃");
    }
    }
    // 草莓
    public class Strawberry extends Fruit{
    @Override
    public void sayName(){
    System.out.println("草莓");
    }
    }
    // 芒果
    public class Mango extends Fruit{
    @Override
    public void sayName(){
    System.out.println("芒果");
    }
    }
    // 桑葚
    public class Mulberry extends Fruit{
    @Override
    public void sayName(){
    System.out.println("桑葚");
    }
    }
    </pre>
  3. 开始建造工厂,工厂只需要有一个返回水果的方法就可以了
    <pre>
    public class FruitFactory{
    public static Fruit produce(String name){
    if("樱桃".equals(name)){
    return new Cherry();
    }
    if("草莓".equals(name)){
    return new Strawberry();
    }
    if("芒果".equals(name)){
    return new Mango();
    }
    if("桑葚".equals(name)){
    return new Mulberry();
    }
    return null;
    }
    }
    </pre>
  4. 可以开工生产水果了
    <pre>
    public class FruitFactoryTest{
    public void static main(String[] args){
    Fruit cherry = FruitFactory.produce("樱桃");
    Fruit strawberry = FruitFactory.produce("草莓");
    Fruit mango = FruitFactory.produce("芒果");
    Fruit mulberry = FruitFactory.produce("桑葚");
    }
    }
    </pre>

以下是此简单工厂模式的UML图

简单工厂模式UML图

参考

《大话设计模式》程杰 著

相关文章

网友评论

    本文标题:写给女朋友的设计模式之1-简单工厂模式

    本文链接:https://www.haomeiwen.com/subject/echvxxtx.html