您的位置:首页 > 编程语言 > Java开发

简单工厂模式和工厂方法模式

2016-07-04 01:29 405 查看

简单工厂模式
  1. 应用场景:一个人想吃饭却又不会做,这时可以去饭店点餐,喜欢什么点什么,让饭店来创建各种食物对象,这时饭店就可以当做一个生产食物对象工厂。
  2. 定义:简单工厂模式是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
  3.  优点:工厂类可以根据外界给定的信息决定创建哪个具体类的对象,用户可以根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的,降低了模块的耦合性;缺点是工厂类扩展较困难,如添加新产品就不得不修改工厂类中的静态工厂方法中的逻辑;
4.代码实现:
我选择食品后工厂生产:

package Factory;

public class Test1 {
public static void main(String[] args) {
Food food1 = FoodFactory.createFood("牛肉");
Food food2 = FoodFactory.createFood("绿色食品");
food1.descript();
food2.descript();

}
}


食物的抽象类:

package Factory;

public abstract class Food {
public float price;
public Food(float price){
this.price = price;
}
public abstract void descript();
}


具体的牛肉类:
package Factory;

public class BeefFood extends Food {

public BeefFood(float price) {
super(price);
}

public void descript() {
System.out.println("生产了牛肉");
}


具体的绿色食品类
package Factory;

public class GreensFood extends Food{

public GreensFood(float price) {
super(price);
}

public void descript() {
System.out.println("生产了绿色食品");
}

}
}


食物生产工厂—饭店
package Factory;

public class FoodFactory {
public static Food createFood(String type){
Food  food = null;
if("牛肉".equals(type)){
food = new BeefFood((float) 2.5);
}else if("绿色食品".equals(type)){
food = new GreensFood((float) 1.1);
}
return food;
}
}


简单工厂模式类图:



工厂方法模式

工厂方法模式类图:



由上两张类图便可清晰的看出两个工厂模式的不一样之处,相比于简单工厂类当我们把所有的产品都放到一个工厂方法中进行初始化会是代码结构不清晰,考略到这一点我们就为每一个产品定义一个创造者然后由调用者自己选择由哪个工厂相连。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息