简单工厂模式实例

本文通过一个简单的工厂模式实例,演示了如何在借贷软件中计算分期还款金额。用户输入借款金额和分期数,工厂根据输入生成每期还款总额。虽然这种模式增强了软件的可扩展性,但可能导致低内聚性和违反开放封闭原则。

1.简单工厂模式

问题:模拟借贷软件计算分期金额过程:控制台提示用户输入要借款的金额,和分期 数(纠错判断:借款最低500元,分期只能输入3、6、9期其中的一个),根据用户输入的借款金额和分期数打印出用户每期应该还款的总金额;

 PS:分期利率:“3期:0.04、6期:0.05、9期:0.06”;比如用户借款500元,分6期,则每期所需还款(500+500*0.04)/3=87.5元

//Operation运算类
abstract class Operation
{

	abstract public double getRepayment();	
}

//分三期
class Three extends Operation
{
	private double money = 0;
	Three(double money){
		this.money = money;
	}
	public double getRepayment(){
		double result = 0;
		result = (money + money * 0.04) / 3;
		return result;
		
	}
}

//分六期
class Six extends Operation
{
	private double money = 0;
	Six(double money){
		this.money = money;
	}
	public double getRepayment(){
		double result = 0;
		result = (money + money * 0.05) / 6;
		return result;
		
	}
}

//分九期
class Nine extends Operation
{
	private double money = 0;
	Nine(double money){
		this.money = money;
	}
	public double getRepayment(){
		double result = 0;
		result = (money + money * 0.06) / 9;
		return result;
		
	}
}

//运算工厂类
class OperationFactory
{
	public static Operation createOperation(double money,int size){
		Operation oper = null;
		switch(size){
			case 3:oper = new Three(money);
			break;
			case 6:oper = new Six(money);
			break;
			case 9:oper = new Nine(money);
			break;
		}
		return oper;
	}
}
public class Test7 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double money = 0;
		int size = 0;
		do{
			System.out.println("请输入你要借的金额,最低500元:");
			money = sc.nextDouble();  //输入借款金额,小于500元重新输入
		}while(money < 500);
		do{
			System.out.println("请输入分期:3/6/9:");
			size = sc.nextInt();	//输入分期数,不符合规则重新输入
		}while(size!=3&&size!=6&&size!=9);
		
		Operation oper = null ;
		oper = OperationFactory.createOperation(money,size);  
		System.out.println("你选择的金额是"+money+"元,分"+size+"期");
		System.out.println("每期需要还款"+oper.getRepayment()+"元");

	}

}


简单总结为一句话:由工厂类根据用户不不同条件去实例化不同对象。而无需了解这些对象是如何创建以及如何组织的,增加了软件的可扩展性,有利于整个软件体系结构的优化。

但是由于一切逻辑都集中在一个工厂类中,导致了没有很高的内聚性,同时也违背了“开放封闭原则”。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值