zoukankan      html  css  js  c++  java
  • 23种设计模式之享元模式代码实例

    享元模式的主要目的是实现对象的共享,在Java的各种池技术中用得比较多,

    如线程池,数据库连接池等。当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象。

    这样可以节约内存。

    数据库连接池:

        public class ConnectionPool {  
              
            private Vector<Connection> 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 Vector<Connection>(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() {  
                pool.add(conn);  
            }  
          
            /* 返回连接池中的一个数据库连接 */  
            public synchronized Connection getConnection() {  
                if (pool.size() > 0) {  
                    Connection conn = pool.get(0);  
                    pool.remove(conn);  
                    return conn;  
                } else {  
                    return null;  
                }  
            }  
        }  
  • 相关阅读:
    利用同步网盘搭建个人或团队SVN服务器
    Entity FrameWork Code First 之 MVC4 数据库初始化策略用法
    Entity FrameWork Code First 迁移命令详解
    Bootstrap Paginator分页插件+ajax
    Bootstrap的js分页插件属性介绍
    AtomicBoolean介绍与使用
    java线程:Atomic(原子)
    Java里的CompareAndSet(CAS)
    ThreadLocal详解
    CalendarUtil 日期操作工具类
  • 原文地址:https://www.cnblogs.com/longhaolove/p/7892129.html
Copyright © 2011-2022 走看看