急!java的自动售货机找零程序public class Change {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.print("The goods cost:");
int cost=sc.nextInt();
System.out.print("The customer paid:");
int paid=sc.nextInt();
change(cost,paid);
}
public static void change(int cost,int paid){
//unit of costpaid is dollar
int change=(paid-cost)*100;
int numOfTF=0;//number of 25 cents
int numOfT=0;//number of 10 cents
int numOfF=0;//number of 5 cents
if(change0)//payment is not enough
System.out.println("payment is not enough");
else{
numOfTF=(int)change/25;
numOfT=(int)(change-numOfTF*25)/10;
numOfF=(int)(change-numOfTF*25-numOfT*10)/5;
System.out.println("Change is: "+numOfTF+" 25 cents, "+numOfT+" 10 cents, "+numOfF+" 5 cents.");
}
}
}
java简单工厂模式是什么简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式 。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 。
那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明:
就拿登录功能来说 , 假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据库中验证用户 , 而域认证则是需要到微软的域中验证用户) 。那么自然的做法就是建立一个各种登录方式都适用的接口,如下图所示:
public interface Login {
//登录验证
public boolean verify(String name , String password);
}
【自动售货机代码java循环选择 自动售货机代码java循环选择程序】public class DomainLogin implements Login {
@Override
public boolean verify(String name, String password) {
// TODO Auto-generated method stub
/**
* 业务逻辑
*/
return true;
}
}
public class PasswordLogin implements Login {
@Override
public boolean verify(String name, String password) {
// TODO Auto-generated method stub
/**
* 业务逻辑
*/
return true;
}
}
我们还需要一个工厂类LoginManager,根据调用者不同的要求,创建出不同的登录对象并返回 。而如果碰到不合法的要求 , 会返回一个Runtime异常 。
public class LoginManager {
public static Login factory(String type){
if(type.equals("password")){
return new PasswordLogin();
}else if(type.equals("passcode")){
return new DomainLogin();
}else{
/**
* 这里抛出一个自定义异常会更恰当
*/
throw new RuntimeException("没有找到登录类型");
}
}
}
测试类:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String loginType = "password";
String name = "name";
String password = "password";
Login login = LoginManager.factory(loginType);
boolean bool = login.verify(name, password);
if (bool) {
/**
* 业务逻辑
*/
} else {
/**
* 业务逻辑
*/
}
}
}
简单工厂模式的结构如下图:
我们可以设想一下真实的场景 , 如果把上面的Test当做一个servlet的话,当客户端发起登录请求——请求交给服务端的Servlet——Servlet根据客户端传递的loginType调用工厂类LoginManager的factory()方法——factory()方法根据参数loginType创建相应的登录验证类(DomainLogin或PasswordLogin)并返回——登录验证类调用方法verify()验证用户名密码是否正确
假如不使用简单工厂模式则验证登录Servlet代码如下(假设Test为一个Servlet , 变量loginType、name、password表示从客户端传递过来的参数):
推荐阅读
- 王者年度十大主播虎牙直播,王者荣耀虎牙主播排行榜
- wordpressjd哪个好,wordpress和wix
- 做h5页面除了html5,使用h5技术制作的网页不用多渠道推广
- 水果直播设备全套,水果直播设备全套有哪些
- linux命令双引号 linux 双引号 单引号
- 投屏码在电视上怎么看不到,为什么电视投屏二维码显示不出来
- 鸿蒙系统安装包文件在哪,鸿蒙系统安装包文件在哪里
- 毕节视频号直播培训,微信视频号直播培训
- linux图像中输命令 linux常用命令图片