9.10 工厂设计模式

发布时间 2023-06-10 22:15:18作者: 盘思动

demo1


interface IFood {
    public abstract void eat();
}

class Bread implements IFood {
    public void eat(){
        System.out.println("吃面包~");
    }
}
class Milk implements IFood {
    public void eat(){
        System.out.println("喝牛奶");
    }
}


/**
* 获取IFood接口实例对象,利用此方法对外隐藏子类;由于Factory没有属性,所以定义static方法
* @return 存在指定标记返回对应子类实例,否则返回null;
*/
class Factory {
    public static IFood getInstance(String className){
        if("bread".equals(className)){
            return new Bread();
        } else if("milk".equals(className)){
            return new Milk();
        } else {
            return null;// 没有匹配返回null
        }
    }
}

public class HelloWorld {
    public static void main(String args[]){
        IFood food = Factory.getInstance("bread");// 通过工厂获取实例
        food.eat();
    }
}
  • 如果在日后进行子类扩充的时候,只需要修改Factory程序类即可实现。