公司做网站一般要多少钱,北京的网页设计,用dw做的网站容易变形,企业管理的五大核心享元模式的主要目的是实现对象的共享#xff0c;即共享池#xff0c;当系统中对象多的时候可以减少内存的开销#xff0c;通常与工厂模式一起使用。 FlyWeightFactory负责创建和管理享元单元#xff0c;当一个客户端请求时#xff0c;工厂需要检查当前对象池中是否有符合条… 享元模式的主要目的是实现对象的共享即共享池当系统中对象多的时候可以减少内存的开销通常与工厂模式一起使用。 FlyWeightFactory负责创建和管理享元单元当一个客户端请求时工厂需要检查当前对象池中是否有符合条件的对象如果有就返回已经存在的对象如果没有则创建一个新对象FlyWeight是超类。一提到共享池我们很容易联想到Java里面的JDBC连接池想想每个连接的特点我们不难总结出适用于作共享的一些个对象他们有一些共有的属性就拿数据库连接池来说url、driverClassName、username、password及dbname这些属性对于每个连接来说都是一样的所以就适合用享元模式来处理建一个工厂类将上述类似属性作为内部数据其它的作为外部数据在方法调用时当做参数传进来这样就节省了空间减少了实例的数量。 看个例子 public class ConnectionPool { private VectorConnection pool; /*公有属性*/ private String url jdbc:mysql://localhost:3306/test; private String username root; private String password root; private String driverClassName com.mysql.jdbc.Driver; private int poolSize 100; private static ConnectionPool instance null; Connection conn null; /*构造方法做一些初始化工作*/ private ConnectionPool() { pool new VectorConnection(poolSize); for (int i 0; i poolSize; i) { try { Class.forName(driverClassName); conn DriverManager.getConnection(url, username, password); pool.add(conn); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } /* 返回连接到连接池 */ public synchronized void release(Connection conn) { pool.add(conn); } /* 返回连接池中的一个数据库连接 */ public synchronized Connection getConnection() { if (pool.size() 0) { Connection conn pool.get(0); pool.remove(conn); return conn; } else { return null; } } } 通过连接池的管理实现了数据库连接的共享不需要每一次都重新创建连接节省了数据库重新创建的开销提升了系统的性能