简单工厂模式
专门定义一个类负责创建其他类的对象,被创建实例的类,都有共同一个父类。
优点:
将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,明确了职责。
把初始化实例时的工作放到工厂里进行,使代码更容易维护。 更符合面向对象的原则,面向接口编程,而不是面向实现编程。
缺点:
要新增产品类的时候,就要修改工厂类的代码。简单工厂出现问题,牵连所有客户端。
灵活性和可维护性较差。
//写一个水果接口
public interface Fruits {
public void eat();
}
//所有的水果类实现水果接口
public class Apple implements Fruits{
@Override
public void eat() {
System.out.println("吃苹果");
}
}
public class Banana implements Fruits {
@Override
public void eat() {
System.out.println("吃香蕉");
}
}
//简单工厂的三种方法,代码如下:
public class FruitsFactory {
//第一种
public static Fruits getApple(){//返回苹果对象
return new Apple();
}
public static Fruits getBanana(){//返回香蕉对象
return new Banana();
}
//第二种
public static Fruits getFruit1(String fruit){
Fruits fruits = null;
if (fruit.equalsIgnoreCase("Apple")) {
fruits = new Apple();
}
if (fruit.equalsIgnoreCase("Banana")) {
fruits = new Banana();
}
return fruits;
}
//第三种
public static Fruits getFruit2(String fruit){
Fruits Fruits = null;
try {
Fruits =(Fruits) Class.forName(fruit).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return Fruits;
}
}