今天看了一篇关于工厂模型的博文。感觉不错,可谓感触颇深,对工厂模型的理解有进一步。下面我也简单介绍一下工厂模型。 工厂模型主要分为以下三种状态: (1).简单工厂模型(SimpleFactory) (2)工厂方法(Factory Method) (3)抽象工厂(Abstract Factory)1、简单工厂模型:其实就是定义一个接口,不同的产品类实现这个接口,最后工厂类通过传入的不同参数去生产不同的产品。这里的核心就是工厂类。下面介绍一个小例子。 假设我们要生产手机和电脑该怎么办呢? 首先先定义一个产品Product接口 12 public interface Product { }要生产手机和电脑就得分别定义电脑类和手机类。 电脑类: public class Computer implements Product{ public Computer(){ System.out.println("电脑被制造出来了"); } }手机类: 12345 public class Phone implements Product{ public Phone(){ System.out.println("电话被制造出来了"); } }这个时候呢就需要工厂出面了。根据传入的参数不同,就代表了不同的需求,生产不同的产品。 简单工厂类: public class SimpleFactory { public static Product Factory(String productName)throws Exception{ if("phone".equals(productName)){ return new Phone(); }else if("computer".equals(productName)){ return new Computer(); }else{ throw new Exception("没有改产品"); } } }下面我们写个测试类,看一下运行结果: 测试类: public class TestSimpleFactory { public static void main(String[] args) { try{ SimpleFactory.Factory("computer"); SimpleFactory.Factory("phone"); }catch(Exception e){ e.printStackTrace(); } } }测试结果为: 电脑被制造出来了 电话被制造出来了 这就是简单工厂,但是简单工厂尤其局限性。简单工厂的核心就是工厂类。一旦工厂类失效,则整个程序就会失效。所以就有了工厂方法和抽象工厂。下面先介绍一下工厂方法。 2、工厂方法:简单的说工厂方法就是给工厂定义了接口,通过多态的形式削弱了工厂的作用。 工厂的接口:定义了一个抽象方法。 public interface Factory { public Product create(); }和上面一样也定义了一个产品接口:用于实现不同产品的生产。 产品接口: 12 public interface Product { }既然有了产品接口就生产不同的产品吧。 手机类: public class Phone implements Product{ public Phone(){ System.out.println("电话被制造出来了"); } }电脑类: public class Computer implements Product{ public Computer(){ System.out.println("电脑被制造出来了"); } }工厂方法的最主要特点就是定义了工厂接口,可以定义出专门生产电脑的工厂,也可以定义出专门生产手机的工厂等等。。。下面就定义工厂的实现类吧 电脑工厂类:专门生产电脑 public class ComputerFactory implements Factory { public Product create() { return new Computer(); } }手机工厂类:专门生产手机 public class PhoneFactory implements Factory{ public Product create() { return new Phone(); } }下面我们写一下工厂方法类:主要创建不同的工厂类,通过不同的工厂生产不同的产品。 工厂方法类: public class FactoryMethod { public static void main(String[] args) { ComputerFactory cf = new ComputerFactory(); cf.create(); PhoneFactory pf = new PhoneFactory(); pf.create(); } }下面看一下运行结果: 电脑被制造出来了 电话被制造出来了 接下来介绍一下抽象工厂类。之后在总结一下三者的区别。接下来请看第2页精彩内容: http://www.linuxidc.com/Linux/2013-08/88646p2.htm