工厂设计模式

工厂设计模式

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();
	}
}

  

原文地址:https://www.cnblogs.com/dldrjyy13102/p/8183662.html