我们用汽车来举个例子
先定义一个接口Car
package com.imust.gof.factory.simple;
public interface Car {
public void run();
}
然后写俩个类分别实现这个接口
package com.imust.gof.factory.simple;
public class Audi implements Car{
@Override
public void run() {
System.out.println("奥迪在跑");
}
}
package com.imust.gof.factory.simple;
public class Byd implements Car{
@Override
public void run() {
System.out.println("比亚迪在跑");
}
}
package com.imust.gof.factory.simple;
public class CarFactory {
public static Car createCar(String type){
if("奥迪".equals(type)){
return new Audi();
}else if("比亚迪".equals(type)){
return new Byd();
}else{
return null;
}
}
}
测试如下
package com.imust.gof.factory.simple;
public class Client01 {
public static void main(String[] args) {
Car c1 = new Audi();
Car c2 = new Byd();
c1.run();
c2.run();
}
}
简单工厂还有另外一个写法
package com.imust.gof.factory.simple;
/**
* 简单工厂
* 也叫做静态工厂,就是工程类一般使用静态方法,通过接收的参数不同来返回不同的对象实例
* 对于增加新产品无能为力。不修改代码的话是无法扩展的。
* @author Zhang.Zhi.Fei 2017年9月6日
*
*/
public class CarFactory02 {
public static Car crateAudi(){
return new Audi();
}
public static Car createByd(){
return new Byd();
}
}
“`
测试的话和上面的第一种是一样的!