简单工厂模式

  1. 本质:就是帮助我们创建对象使用的。就是将调用者和创建者的分离
  2. 工厂模式分为:简单工厂、工厂方法模式、抽象工厂模式
  3. 简单工厂模式实现
  4. 首先写一下不使用工厂模式,创建对象

接口代码:

package kw.test.gcms;
public interface Car {
    public void run();

}

实现类1:

package kw.test.gcms;

public class BenBen implements Car{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("我是benben");
    }

}

实现类2:

package kw.test.gcms;

public class HongQi implements Car{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("我是hongqi!");
    }

}

客户端代码

package kw.test.gcms;

public class NoGcMo {
    public static void main(String[] args) {
        BenBen ben = new BenBen();
        ben.run();
        HongQi hongQi = new HongQi();
        hongQi.run();
    }
}

5.使用简答工厂方法

方式1:

package kw.test.gcms;

public class CarFactory {
    public static Car run(String name)
    {
        if("hongqi".equals(name)) {
            return new HongQi();
        }else if("benben".equals(name))
        {
            return new BenBen();
        }else
        {
            return null;
        }
    }
}

注意:上面if("hongqi".equals(name))是为了防止未传入参数,而抛出异常。

客户端代码

package kw.test.gcms;

public class GcMs {
    public static void main(String[] args) {
        Car hongqi = CarFactory.run("hongqi"); 
        Car benben = CarFactory.run("benben");
        hongqi.run();
        benben.run();
    }
/*
 * 这对于代码 是增多 了。但是对于调用者是简单了。
 * 
 * 它的缺点就是,增加方法的时候,需要修改不源代码,违背了开闭原则。
 */
}

实现方式二:

package kw.test.gcms;

/*
 * 简单工厂实现方式二
 */
public class CarFactory2 {
    public static Car hongqi() {
        return new HongQi(); 
    }
    public static Car benben() {
        return new BenBen();
    }

}

 

 

一般使用静态的方式,目的是为了使用类名调用方法。

posted @ 2018-03-12 13:38  kwdeep  阅读(108)  评论(0编辑  收藏  举报