进服务器编辑网站怎么做,wordpress 糗百,网络规划设计师取消了,网站改版301怎么做享元模式(Flyweight)
享元模式是一种结构型模式#xff0c;它主要用于减少创建对象的数量#xff0c;减少内存占用。通过重用现有对象的方式#xff0c;如果未找到匹配对象则新建对象。线程池、数据库连接池、常量池等池化的思想就是享元模式的一种应用。
图解 角色 享元工…享元模式(Flyweight)
享元模式是一种结构型模式它主要用于减少创建对象的数量减少内存占用。通过重用现有对象的方式如果未找到匹配对象则新建对象。线程池、数据库连接池、常量池等池化的思想就是享元模式的一种应用。
图解 角色 享元工厂负责创建和管理享元对象通常包含一个池用于存储和复用已经创建的享元对象具体享元实现抽象元接口包含内部和外部状态内部状态可被分享外部状态由客户端传递抽象享元定义具体享元和非共享享元接口通常包含设置外部状态的方法客户端使用享元工厂获取享元对象并通过设置外部状态来操作享元对象。客户端通常不需要关心享元对象的具体实现 代码实现
抽象享元
public interface Connection {void get();
}具体享元
public class JdbcConnection implements Connection{private String id;public JdbcConnection(String id) {this.id id;}Overridepublic void get() {System.out.println(连接ID为 this.id);}
}
享元工厂
public class JdbcConnectionFactory {ListConnection list new ArrayList();private int count 5;private Random random new Random();public Connection getConnection(){if(list.size() count){JdbcConnection jdbcConnection new JdbcConnection(UUID.randomUUID().toString());list.add(jdbcConnection);return jdbcConnection;}else {int i random.nextInt(4);return list.get(i);}}
}客户端
public class Test {public static void main(String[] args) {JdbcConnectionFactory jdbcConnectionFactory new JdbcConnectionFactory();for (int i 0; i 6; i) {Connection connection jdbcConnectionFactory.getConnection();connection.get();}}
}连接ID为406ba526-7a07-41e4-9a4d-6df479aa9bce
连接ID为f9bc31c7-77d0-4a4f-90b2-166e9656c9ac
连接ID为81e52b30-7c49-4ffa-b6bb-dd3c0863d0b4
连接ID为bd124c69-db5e-4a84-a9ee-1ba56fc12990
连接ID为f953b8fd-ac5c-4988-9fec-b7660669700e
连接ID为bd124c69-db5e-4a84-a9ee-1ba56fc12990最多产生五个连接对象