Java之工厂设计模式
package Demo_1_24_Interface; // 食物的标准接口 public interface IFood { public boolean eat(); }
package Demo_1_24_Interface; //面包类 public class Bread implements IFood{ @Override public boolean eat() { System.out.println("面包好吃!"); return true; } }
package Demo_1_24_Interface; // 牛奶类 public class Milk implements IFood{ @Override public boolean eat() { System.out.println("喝牛奶!"); return true; } }
package Demo_1_24_Interface; // 中间转换类 public class Factory { public static IFood getInstance(String className) { if ("Bread".equals(className)) { return new Bread(); // 等同于 IFood food = new Bread();
}else if ("Milk".equals(className)) {
return new Milk(); // 等同于 IFood food = new Milk();
}else {
return null; }
}
}
package Demo_1_24_Interface; public class IFoodTest { public static void main(String[] args) { /* IFood food1 = new Bread(); food1.eat(); IFood food2 = new Milk(); food2.eat(); */ // 当对象food不需要吃面包,而需要喝牛奶时, // 就需要将new Bread();改为new Milk(); // 这种情况就是造成了耦合,而造成耦合的原因就是:new // 为了避免这种问题,采用工厂模式设计 IFood food = Factory.getInstance("Milk"); food.eat(); } }
工厂类就是一个选择类,通过筛选类名进行不同子类的创建,创建的对象都是通过向上转型的父类类型的对象。