public class FactoryMode {
public static void main(String[] args) {
Fruit fruit = Factory.getInstance("apple");
if (fruit!=null){
fruit.getEat();
}
}
}
//定义水果接口标准,水果就是用来吃的
interface Fruit{
void getEat();
}
//实现水果类的抽象方法
class Apple implements Fruit{
@Override
public void getEat() {
System.out.println("吃苹果!");
}
}
class Oranges implements Fruit{
@Override
public void getEat() {
System.out.println("吃橙子!");
}
}
class Factory{
public static final String APPLE = "apple";
public static final String ORANGES = "oranges";
/**
* 根据传入的不同名称返回不同对象
* @param fruitName
* @return
*/
public static Fruit getInstance(String fruitName){
if (APPLE.equals(fruitName)){
return new Apple();
}
else if (ORANGES.equals(fruitName)){
return new Oranges();
}else {
return null;
}
}
}
/*
- 总结:程序定义了一个Factory工厂类,并且提供了一个静态方法用来返回Fruit接口的实例化对象,
- 该方法对外隐藏子类,只需要根据声明Fruit类即可实例化一个实现Fruit接口的对象。
- 缺点:
- 1、每次修改添加Fruit接口时都需要对Factory进行修改
- 2、如果有多个接口是通过Factory获取实例的,那么Factory获取实例的逻辑也要添加
- */
网友评论