工厂设计模式
长按关注《Java学研大本营》,加入读者群,分享更多精彩 扫码关注《Java学研大本营》,加入读者群,分享更多精彩
什么是工厂设计模式,什么时候必须使用它?让我们通过一个例子来理解它。在我的软件开发人员经验中,如果我尝试总结我使用最多的设计模式,那么工厂设计模式位居前三。当谈到单例模式或构建器模式时,许多库使用注释来提供此功能。工厂设计模式是唯一一个你必须自己实现的模式。
让我们来理解问题陈述,因此请考虑一种情况,您必须处理酒店客房预订服务,并且有三种类型的房间。普通房、豪华房、别墅。根据客户的要求,您必须在您的程序中创建一个对象。
正如我们所看到的,所有三个对象都应该扩展相同的接口/类,因为它们具有相同的功能。所以创建一个接口/类Room
class Room {
public string getRoomId();
public float getPrice();
}
现在为每种房间类型创建三个类。
class NoramalRoom extends Room {
private string roomType;
private string roomId;
private float price;
}
class DeluxRoom extends Room {
private string roomType;
private string roomId;
private float price;
}
class Villa extends Room {
private string roomType;
private string roomId;
private float price;
}
我不会在类中添加更多功能,因此我们可以专注于设计模式。
现在根据客户的要求创建一个用于创建房间对象的类。这个类的名字是RoomFactory。首先,查看代码,然后我们进行解释。
class RoomFactory {
public static Room getRoom(String roomType) {
switch(roomType){
case 'Normal':
return new NormalRoom();
case 'Delux':
return new DeluxRoom();
case 'Villa':
return new Villa();
}
}
}
这是一个工厂类,我觉得代码本身就解释了很多。这里我们有一个静态方法,这是这个类中唯一一个将字符串作为输入并根据它返回Room对象的方法。
现在任何图书馆都使用这个类并为房间创建一个对象。
推荐书单
《项目驱动零起点学Java》
《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。
《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。
马士兵,马士兵教育创始人,毕业于清华大学,著名IT讲师,所讲课程广受欢迎,学生遍布全球大厂,擅长用简单的语言讲授复杂的问题,擅长项目驱动知识的综合学习。马士兵教育获得在线教育“名课堂”奖、“最受欢迎机构”奖。
赵珊珊,从事多年一线开发,曾为国税、地税税务系统工作。拥有7年一线教学经验,多年线上、线下教育的积累沉淀,培养学员数万名,讲解细致,脉络清晰。
链接: https://item.jd.com/13607758.html
精彩回顾
长按关注《Java学研大本营》
长按二维码,加入Java读者群
扫码关注《Java学研大本营》,加入读者群,分享更多精彩