获得徽章 0
#青训营 x 字节后端训练营#
今天依旧分享后端面试题: 编码的设计模式中,知不知道享元模式和模板模式?
模板模式顾名思义将相同的代码放到抽象父类中,而将不同的代码放到不同的子类中。
应用实例:在游戏开发中,经常需要创建多个角色,这些角色可能有不同的行为、属性等。这时我们可以使用模板模式来实现这些角色的共性部分,如移动、攻击等。
享元模式:Java 享元模式(Flyweight Pattern)是一种结构型模式,它通过共享对象来减少内存中对象的数量,从而提高系统的性能。具体来说,该模式使用一个工厂类来管理多个共享的对象,这些共享对象都具有相同的内部状态和外部状态,而内部状态可以共享,外部状态则需要在使用时传入。下面是一些 Java 享元模式的应用场景:
字符串常量池:在 Java 中,字符串常量池就是一种使用了享元模式的设计,它将字符串的内部状态(即它的字符序列)进行了共享,避免了重复创建相同的字符串对象,节省了系统内存。
图形绘制:在图形绘制时,通常会有大量相似的图形需要绘制。这时我们可以使用享元模式,将相同的图形对象进行共享,只需修改其外部状态(如位置、颜色等),避免了重复创建相同的图形对象。
线程池:在线程池中,每个线程都具有相同的代码逻辑和内部状态,区别仅在于它们的外部状态(如任务)。如果每个任务都创建一个新的线程,会导致系统开销较大。这时可以使用享元模式,将相同的线程对象进行共享,只需修改其外部状态(即任务),避免了创建大量的线程对象。
数据库连接池:在数据库编程中,每次连接到数据库都需要进行一些时间上的开销(如建立连接、认证等)。如果每次都新建一个连接,会导致系统开销较大。这时可以使用享元模式,将连接对象进行共享,只需修改其外部状态(即数据库信息),避免了重复创建连接对象。
今天依旧分享后端面试题: 编码的设计模式中,知不知道享元模式和模板模式?
模板模式顾名思义将相同的代码放到抽象父类中,而将不同的代码放到不同的子类中。
应用实例:在游戏开发中,经常需要创建多个角色,这些角色可能有不同的行为、属性等。这时我们可以使用模板模式来实现这些角色的共性部分,如移动、攻击等。
享元模式:Java 享元模式(Flyweight Pattern)是一种结构型模式,它通过共享对象来减少内存中对象的数量,从而提高系统的性能。具体来说,该模式使用一个工厂类来管理多个共享的对象,这些共享对象都具有相同的内部状态和外部状态,而内部状态可以共享,外部状态则需要在使用时传入。下面是一些 Java 享元模式的应用场景:
字符串常量池:在 Java 中,字符串常量池就是一种使用了享元模式的设计,它将字符串的内部状态(即它的字符序列)进行了共享,避免了重复创建相同的字符串对象,节省了系统内存。
图形绘制:在图形绘制时,通常会有大量相似的图形需要绘制。这时我们可以使用享元模式,将相同的图形对象进行共享,只需修改其外部状态(如位置、颜色等),避免了重复创建相同的图形对象。
线程池:在线程池中,每个线程都具有相同的代码逻辑和内部状态,区别仅在于它们的外部状态(如任务)。如果每个任务都创建一个新的线程,会导致系统开销较大。这时可以使用享元模式,将相同的线程对象进行共享,只需修改其外部状态(即任务),避免了创建大量的线程对象。
数据库连接池:在数据库编程中,每次连接到数据库都需要进行一些时间上的开销(如建立连接、认证等)。如果每次都新建一个连接,会导致系统开销较大。这时可以使用享元模式,将连接对象进行共享,只需修改其外部状态(即数据库信息),避免了重复创建连接对象。
展开
评论
点赞