工厂模式

来源:互联网 发布:北京java程序员工资 编辑:程序博客网 时间:2024/06/03 03:19

工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 

因此简单工厂模式中就把产品类做为抽象类,有哪些产品就派生多少子类。并且在工厂里写让其通过类型选择生产哪种产品。

让我们看一段代码

abstract class Product{//抽象产品类public abstract void Produce();//抽象生产方法}class Product007 extends Product{//007型产品public void Produce(){System.out.println("Product 007");}}class Product100 extends Product{//100型产品public void Produce (){System.out.println("Product 100");}}class SimpleFactory {//工厂Product createProduct(int type) {//生产方法      if(type == 100){         new Product100().Produce();;      } else if(type == 007){         new Product007().Produce();;      }       return null;}}public class Customer{//消费者public static void main(String[] args) {SimpleFactory factory = new SimpleFactory();//找到工厂factory.createProduct(100);//生产100产品factory.createProduct(007);//生产007产品}}


以上就是简单工厂模式,这样消费者和产品就没有直接的关系符合低耦合的要求。但是简单工厂又不好添加新的产品类型,所以又有抽象工厂。

接下来再看下抽象工厂的代码

abstract class Product{//抽象产品类public abstract void Produce();//抽象生产方法}class Product007 extends Product{//007型产品public void Produce(){System.out.println("Product 007");}}class Product100 extends Product{//100型产品public void Produce (){System.out.println("Product 100");}}abstract class Factory {//抽象工厂abstract void createProduct();}class Factory007 extends Factory {//007工厂public void createProduct(){//生产007产品new Product007().Produce();}}class Factory100 extends Factory {//100工厂public void createProduct(){//生产100产品new Product100().Produce();}}public class Customer{//消费者public static void main(String[] args) {Factory100 factory100 = new Factory100();//找到100工厂factory100.createProduct();Factory007 factory007= new Factory007();//找到007工厂factory007.createProduct();}}


到了抽象工厂我们就可以很方便的修改生产的产品类型了。

 但是面对产品类型非常庞大时,并不建议这样做。



原创粉丝点击