java interface和impl_为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?...

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?

大家好,我是IT修真院郑州分院第12期的学员李雨航,一枚正直纯洁善良的后端程序员,今天给大家分享一下,修真院官网java(职业)任务1,深度思考中的知识点——为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?

1.背景介绍

类是属性和方法容器,但是这些属性和方法没有任何区别的堆积在一起,当开发人员要寻找某个方法时,将很不方便,而且直接使用实现类导致父类-子类间出现强耦合,很容易导致软件复杂度失控,

这个时候,接口出现了,接口的出现就是为了解决这个问题。

2.知识剖析

1.接口:

接口是一种特殊的抽象类,是一个比抽象类还抽象的类,这种抽象类中只包含常量与方法的定义,而没有变量和方法的实现,接口,接口里所有的方法全是抽象方法。

2.接口中成员的特点

(1)Java 为了保证数据安全性是不能多继承的,也就是一个类只有一个父类。

但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补了抽象类不能多继承

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例,实现了个人心页面显示购买的票,包括dao层,service层,impl层,view层的Java代码和MySQL数据库表设计。 首先,我们需要设计MySQL数据库表,例如: ``` CREATE TABLE ticket ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, ticket_name VARCHAR(100), ticket_price DECIMAL(10, 2), purchase_date DATE ); ``` 这个表用于存储用户购买的票的信息,包括票的名称、价格、购买日期等。 接下来,我们需要创建一个Ticket实体类,用于封装从数据库查询出来的票的信息: ```java public class Ticket { private int id; private int userId; private String ticketName; private BigDecimal ticketPrice; private LocalDate purchaseDate; // 省略 getter 和 setter 方法 } ``` 接着,我们需要创建一个TicketDao接口,定义了查询用户购买的票的方法: ```java public interface TicketDao { List<Ticket> findByUserId(int userId); } ``` 然后,我们创建一个TicketDaoImpl类,实现了TicketDao接口,并且实现了findByUserId方法: ```java public class TicketDaoImpl implements TicketDao { private Connection connection; public TicketDaoImpl(Connection connection) { this.connection = connection; } @Override public List<Ticket> findByUserId(int userId) { List<Ticket> tickets = new ArrayList<>(); try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM ticket WHERE user_id = ?")) { ps.setInt(1, userId); try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { Ticket ticket = new Ticket(); ticket.setId(rs.getInt("id")); ticket.setUserId(rs.getInt("user_id")); ticket.setTicketName(rs.getString("ticket_name")); ticket.setTicketPrice(rs.getBigDecimal("ticket_price")); ticket.setPurchaseDate(rs.getDate("purchase_date").toLocalDate()); tickets.add(ticket); } } } catch (SQLException e) { e.printStackTrace(); } return tickets; } } ``` 接着,我们创建一个TicketService接口,定义了查询用户购买的票的方法: ```java public interface TicketService { List<Ticket> findTicketsByUserId(int userId); } ``` 然后,我们创建一个TicketServiceImpl类,实现了TicketService接口,并且实现了findTicketsByUserId方法: ```java public class TicketServiceImpl implements TicketService { private TicketDao ticketDao; public TicketServiceImpl(TicketDao ticketDao) { this.ticketDao = ticketDao; } @Override public List<Ticket> findTicketsByUserId(int userId) { return ticketDao.findByUserId(userId); } } ``` 最后,我们可以创建一个简单的JSP页面,用于显示用户购买的票的信息: ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>个人心</title> </head> <body> <h1>个人心</h1> <h2>我的票</h2> <table> <tr> <th>ID</th> <th>票名</th> <th>价格</th> <th>购买日期</th> </tr> <c:forEach items="${tickets}" var="ticket"> <tr> <td>${ticket.id}</td> <td>${ticket.ticketName}</td> <td>${ticket.ticketPrice}</td> <td>${ticket.purchaseDate}</td> </tr> </c:forEach> </table> </body> </html> ``` 这个页面使用JSTL标签库来遍历查询到的票的信息,并且显示在页面上。 最后,我们可以创建一个Servlet,用于处理用户访问个人心页面的请求,并且调用TicketService来查询用户购买的票的信息: ```java public class PersonalCenterServlet extends HttpServlet { private TicketService ticketService; @Override public void init() throws ServletException { super.init(); Connection connection = getConnectionFromDataSource(); // 从数据源获取连接 ticketService = new TicketServiceImpl(new TicketDaoImpl(connection)); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int userId = getUserIdFromSession(request); // 从Session获取用户ID List<Ticket> tickets = ticketService.findTicketsByUserId(userId); request.setAttribute("tickets", tickets); request.getRequestDispatcher("/personal-center.jsp").forward(request, response); } // 省略其他方法 } ``` 这个Servlet在初始化时,从数据源获取连接,并且创建了TicketServiceImpl对象。在处理用户访问个人心页面的请求时,从Session获取用户ID,并且调用TicketService来查询用户购买的票的信息,并且将查询到的票的信息设置为请求的属性,最后转发到JSP页面进行渲染。 以上就是一个简单的个人心页面显示购买的票的示例,包括dao层,service层,impl层,view层的Java代码和MySQL数据库表设计。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值