[qicheng骐程]Java面向对象编程考虑和简单工厂模式

[qicheng骐程]Java面向对象编程考虑和简单工厂模式

详见更多到公众号【骐程】

1.简单工厂模式:

简单工厂模式就是一种设计模式,设计模式是一种最佳的实践编码,是软件开发的一种问题解决方案,使用过设计模式在代码的重用性以及对人的理解都大大加强。合理选择设计模式选择有助于解决我们身边的问题,每一种模式都有其对应的原理和它对应的生活中具体的生活场景,

设计模式:(3大类23种<创建型的,结构性的,行为型的>) •创建型模式:不同的创建对象的模式(不止)
•工厂模式(简单工厂模式、工厂方法模式) • 单例模式

简单工厂模式 :
1.简单说就是不在new对象(new Object())来创建对象,根据用户的选择条件来实例化相关的类。

2.去除具体类的依赖性。只需要给出具体的实例描述给工厂,工厂就会自动返回具体的实例化对象(客户端不需要改变,因为没有new的方法来创建对象)。
在这里插入图片描述

3.生成工厂的方法不是普通的方法 ,可以定义为static静态方法,客户端的工厂创建都可以不要,直接通过类名.来调用。

在这里插入图片描述

简单工厂模式设计:工厂类、客户端类 、商品类(接口或抽象类)、具体商品子类、接口

优点:

工厂隐藏了对象创建的细节, 客户端直接使用就可以不需要知道这么创建的。

缺点:

工厂类里面的代码很多,创建各种对象,使用各种业务判断的代码,代码就冗杂,每次创建或者删除对象都要操作工厂类,类就会庞大臃肿,方法之间耦合性强,修改和增加都很麻烦。避免这种缺点可以使用工厂方法模式(解耦合)。

2.汽车租聘系统:

在这里插入图片描述

汽车:父类

轿车、客车:子类

品牌、车牌号:汽车的属性

型号 :轿车特有属性

座位数:客车特有属性

折扣:汽车的功能方法(计算租金)

设计类:

汽车设计为抽象类

设计方法:

计算租金为抽象方法

类图:
在这里插入图片描述

考虑和租车业务来筛选,不相关的就不要考虑

汽车业务类:
•汽车信息初始化 :

数组存储汽车信息(汽车(汽车类):客车、轿车)

数组类型:Vehicle
•租聘汽车:租给用户–》返回值;Vehicle 父类类型作为返回值

      用户提供的信息:客车(座位数、品牌)  、轿车(品牌、型号)

      参数 :品牌、座位数、型号(客车:(品牌、座位数、0)  、轿车:(品牌、0、型号))

       方法体:由用户提供信息遍历汽车数组 ,找到相应车给用户

租聘天数计算时使用,在测试类中使用

回顾简单工厂模式下的汽车租聘系统 :

  1. 按照汽车租聘的功能划分类,如汽车类,轿车、客车子类、汽车管理类,其他的如汽车制造、汽车这么开等等和这里没有关系的1就可以不用考虑;
  2. 设计好子类之后考虑:①汽车父类的,定义共有的属性(品牌、车牌号、日租金),方法(计算租金);②轿车、客车子类;③汽车管理类(初始化汽车库,构建租车方法);④汽车租聘系统(用户使用,调用租车方法)。
    3.具体代码见:

汽车类:

public abstract class Vehicles {
   
//属性:品牌、车牌、租金
	private String brand;
	private String vehicleID;
	private int vehicleRent;
	
	//定义构造方法,不为创建对象为后面的调用
	public Vehicles(){
   
		
	}
	public Vehicles(String brand, String vehicleID, int vehicleRent) {
   
		super();
		this.brand = brand;
		this.vehicleID = vehicleID;
		this.vehicleRent = vehicleRent;
	}


	public String getBrand() {
   
		return brand;
	}
	public void setBrand(String brand) {
   
		this.brand = brand;
	}
	public String getVehicleID() {
   
		return vehicleID;
	}
	public void setVehicleID(String vehicleID) {
   
		this.vehicleID = vehicleID;
	}
	public int getVehicleRent() {
   
		return vehicleRent;
	}
	public void setVehicleRent(int vehicleRent) {
   
		this.vehicleRent = vehicleRent;
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值