[qicheng骐程]Java面向对象编程考虑和简单工厂模式
详见更多到公众号【骐程】
1.简单工厂模式:
简单工厂模式就是一种设计模式,设计模式是一种最佳的实践编码,是软件开发的一种问题解决方案,使用过设计模式在代码的重用性以及对人的理解都大大加强。合理选择设计模式选择有助于解决我们身边的问题,每一种模式都有其对应的原理和它对应的生活中具体的生活场景,
设计模式:(3大类23种<创建型的,结构性的,行为型的>) •创建型模式:不同的创建对象的模式(不止)
•工厂模式(简单工厂模式、工厂方法模式) • 单例模式
简单工厂模式 :
1.简单说就是不在new对象(new Object())来创建对象,根据用户的选择条件来实例化相关的类。
2.去除具体类的依赖性。只需要给出具体的实例描述给工厂,工厂就会自动返回具体的实例化对象(客户端不需要改变,因为没有new的方法来创建对象)。
在这里插入图片描述
3.生成工厂的方法不是普通的方法 ,可以定义为static静态方法,客户端的工厂创建都可以不要,直接通过类名.来调用。
简单工厂模式设计:工厂类、客户端类 、商品类(接口或抽象类)、具体商品子类、接口
优点:
工厂隐藏了对象创建的细节, 客户端直接使用就可以不需要知道这么创建的。
缺点:
工厂类里面的代码很多,创建各种对象,使用各种业务判断的代码,代码就冗杂,每次创建或者删除对象都要操作工厂类,类就会庞大臃肿,方法之间耦合性强,修改和增加都很麻烦。避免这种缺点可以使用工厂方法模式(解耦合)。
2.汽车租聘系统:
汽车:父类
轿车、客车:子类
品牌、车牌号:汽车的属性
型号 :轿车特有属性
座位数:客车特有属性
折扣:汽车的功能方法(计算租金)
设计类:
汽车设计为抽象类
设计方法:
计算租金为抽象方法
类图:
考虑和租车业务来筛选,不相关的就不要考虑
汽车业务类:
•汽车信息初始化 :
数组存储汽车信息(汽车(汽车类):客车、轿车)
数组类型:Vehicle
•租聘汽车:租给用户–》返回值;Vehicle 父类类型作为返回值
用户提供的信息:客车(座位数、品牌) 、轿车(品牌、型号)
参数 :品牌、座位数、型号(客车:(品牌、座位数、0) 、轿车:(品牌、0、型号))
方法体:由用户提供信息遍历汽车数组 ,找到相应车给用户
租聘天数计算时使用,在测试类中使用
回顾简单工厂模式下的汽车租聘系统 :
- 按照汽车租聘的功能划分类,如汽车类,轿车、客车子类、汽车管理类,其他的如汽车制造、汽车这么开等等和这里没有关系的1就可以不用考虑;
- 设计好子类之后考虑:①汽车父类的,定义共有的属性(品牌、车牌号、日租金),方法(计算租金);②轿车、客车子类;③汽车管理类(初始化汽车库,构建租车方法);④汽车租聘系统(用户使用,调用租车方法)。
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;