工厂设计模式
OOP基于接口的设计,高内聚,低耦合
DrinkFactory用来存储不同的对象,但是,这样会造成返回值存在多个类型,解决的方法是运用向上转型,定义接口类型作为父类,具体的实现对象作为接口的实现子类。
注意工厂中的getInstance方法声明为静态static方法,此方法用来获取具体的对象。
进一步实现
进一步完善
完善代码,去除构造方法,避免直接new调用
最终版本
package oop; /** * 工厂模式 * 基于接口的设计模式 */ interface Drink{public void drink();} class Milk implements Drink{ public void drink(){System.out.println("喝牛奶");} } class Bear implements Drink{ public void drink(){System.out.println("喝啤酒");} } class DrinkFactory{ private DrinkFactory(){};//完善 public static Drink getInstance(String str){//工厂用来存储不同的对象 if (str.equalsIgnoreCase("m")) { return new Milk(); }else if (str.equalsIgnoreCase("b")) { return new Bear(); } return null; } } public class Gongchang { public static void main(String[] args) { //注意声明为静态static方法 Drink d1=DrinkFactory.getInstance("m"); d1.drink(); Drink d2=DrinkFactory.getInstance("b"); d2.drink(); } }