简单工厂----工厂方法----抽象工厂模式

简单工厂

简单工厂具体来说不算一种模式,
而是一种设计思想————将业务逻辑和界面逻辑分离,即服务端和客户端分离
在不需要客户端进行修改,在服务端修改增加产品类即可。
具体的做法:
1.创建工厂类作为父类,产品类作为工厂类子类,具体产品类作为产品类子类
2.工厂类根据客户端选择参数的不同,建立创建产品函数返回产品对象,产品类写出方法,具体产品类作为具体实现
服务端代码:

服务端
public class Factory{
	// 工厂制作**相应的产品对象**
	public createProduct(int choose){
		HamburgerProduct hamburger = null;
		switch (choose){
			case "1":
			hamburger = new Hamburger_Spicy();
			break;
			case "2":
			hamburger = new Hamburger_Beef();
			break;
		}
		return hamurger;
	}
}
// 汉堡产品确定需要的动作
public class HamburgerProduct extends Factory{
	private double price;
	public double getPrice() {return price;}
	public double setPrice() {return price;}
	public void showInfo(){};
	
}
// 具体的汉堡产品实现具体的操作,比如实现价格显示,和价格初始化
public class Hamburger_Spicy extends HamburgerProduct{
	// 价格初始化
	public Hamburger_Spicy(){
		this.setPrice(18.0);
	}
	// 具体实现了展现信息
	@Override
	public void showInfo(){
		System.out.println("香辣汉堡的价格为" + this.getPrice());
	}
}
//具体的汉堡产品实现
public class Hamburger_Beef extends HamburgerProduct{
	// 价格初始化
	public Hamburger_Spicy(){
		this.setPrice(38.0);
	}
	// 具体实现了展现信息
	@Override
	public void showInfo(){
		System.out.println("牛肉汉堡的价格为" + this.getPrice());
	}
}

客户端的代码:

public class Main{
	public static void main(String[] args){
		HamburgerProduct hamburger;
		//客户端输入具体的参数,就能获得相应的产品对象
		hamburger = Factory.createProduct(1);
	}
}

优点

1.实现了对象创建和使用的分离(即业务逻辑和界面逻辑分离)
2.客户端无需知道所创建的具体产品类的类名,只需知道具体产品类所对应的参数即可。
3.通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。
缺点我就不说了,因为很明显,这是仅仅是一个经常要用到的思想,但是真正的工程不可能这么简单的,缺点很多也很致命,这个算不上设计模式。

工厂方法模式

发布了19 篇原创文章 · 获赞 4 · 访问量 483

猜你喜欢

转载自blog.csdn.net/qq_35050438/article/details/104095463