设计模式四之工厂模式1

  从学习设计模式以来,一直强调接口编程,依赖抽象而不是具体,但是每次看到new出新的对象,是不是就会有些疑问呢?怎么会这样,难道只能这样吗?似乎java中只提供了这种从类中生成对象的方式,不用怀疑,java确实只有这种基础的生成对象的方式,但是我们可以抽象它,使我们的调用代码在更高级的层面上来生成对象,根据不同的业务需求来获取对象。

  工厂模式有三种,一种是简单工厂,再有一种是工厂方法,最后一种是抽象工厂。

  简单工厂一般都写成静态工厂,如下,

  

package com.csshu.simple;
/**
 * 工厂类代码,仅仅是简答的根据条件来生成代码,最后返回一个对象
 * @author shujianhua
 *
 */
public class Simeple {
    private static Pizza pizza;
    public static Pizza create(String type){
        if (type.equals("1")){
            pizza = new Pizza1();
        } else if (type.equals("2")){
            pizza = new Pizza2();
        }else if (type.equals("3")){
            pizza = new Pizza3();
        }else if (type.equals("4")){
            pizza = new Pizza4();
        }else if (type.equals("5")){
            pizza = new Pizza5();
        }else if (type.equals("6")){
            pizza = new Pizza6();
        }
        return pizza;
    }
}


package com.csshu.simple;

public class Pizza {
    public void speak(){
        System.out.println("i am a pizza parent");
    }
}


package com.csshu.simple;

public class Pizza1 extends Pizza{
    @Override
    public void speak() {
        System.out.println("1");
    }
}


package com.csshu.simple;

public class Test {
    public static void main(String[] args) {
        Pizza pizza = Simeple.create("1");
        pizza.speak();
    }
}

如上,即为简单工厂的方法,因为一般写作静态类,所以不能继承,不能通过子类改变方法。

  工厂方法稍做一步抽象,将生成推向推迟到子类中生成。

  抽象工厂,主要作用在于对大量的对象的集合,主要是对象方面的。

  工厂方法和抽象工厂待续---

 

posted @ 2015-11-25 00:37  likeshu  阅读(138)  评论(0编辑  收藏  举报