工厂模式

 

简单工厂模式(静态工厂模式)

          

//抽象产品
public interface Fruit {
	public void eat();
}

//具体产品-苹果
public class Apple implements Fruit{
	@Override
	public void eat() {
		System.out.println("吃苹果");
		
	}

}
//具体产品-香蕉
public class Balaner implements Fruit{
	@Override
	public void eat() {
		System.out.println("吃香蕉");
		
	}

}

//抽象工厂
public interface FruitFactory {
	public static Fruit createFruit(String type){
		Fruit fruit = null;
		switch (type) {
		case "1":
			fruit = new Apple();
			break;
		case "2":
			fruit = new Balaner();
		}
		return fruit;
	}
}

//测试类
public class MainTest {
	public static void main(String[] args) {
		Fruit fruit = FruitFactory.createFruit("1");
		fruit.eat();
	}
}

工厂方法模式

//抽象工厂类
public interface FruitFactory {
	//定义创建实例的方法
	public Fruit createFruit();
}

//具体产品类-苹果
public class AppleFactory implements FruitFactory{
	@Override
	public Fruit createFruit() {
		return new Apple();
	}
}

//测试类
public class MainTest {
	public static void main(String[] args) {
		FruitFactory factory = new AppleFactory();
		Fruit fruit = factory.createFruit();
		fruit.eat();
	}
}

抽象工厂模式

抽象工厂和抽象方法的区别在于抽象工厂可以生成多个产品

总结

工厂方法:

抽象工厂:

例如,汽车可以分为轿车、SUV、MPV等,也分为奔驰、宝马等。我们可以将奔驰的所有车看作是一个产品族,而将宝马的所有车看作是另一个产品族。分别对应两个工厂,一个是奔驰的工厂,另一个是宝马的工厂。

与工厂方法不同,奔驰的工厂不只是生产具体的某一个产品,而是一族产品(奔驰轿车、奔驰SUV、奔驰MPV)。“抽象工厂”的“抽象”指的是就是这个意思。

简单工厂 : 用来生产同一等级结构中的任意产品。(不支持拓展增加产品)

工厂方法 :用来生产同一等级结构中的固定产品。(支持拓展增加产品)   

抽象工厂 :用来生产不同产品族的全部产品。(不支持拓展增加产品;支持增加产品族) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值