`
wfzhanga
  • 浏览: 70195 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

内部类使用的四种常用场景

阅读更多
场景一:当某个类除了它的外部类,不再被其他的类使用时:
我们说这个内部类依附于它的外部类而存在,可能的原因有:
1、不可能为其他的类使用;
2、出于某种原因,不能被其他类引用,可能会引起错误,等等。
这个场景是我们使用内部类比较多的一个场景。下面我们以一个大家熟悉的例子来说明:
在我们的企业级Java项目开发过程中,数据库连接池是一个我们经常要用到的概念。虽然在很多时候,我们都是用的第三方的数据库连接池,不需要我们亲自来做这个数据库连接池。但是,作为我们Java内部类使用的第一个场景,这个数据库连接池是一个很好的例子。为了简单起见,以下我们就来简单的模拟一下数据库连接池,在我们的例子中,我们只实现数据库连接池的一些简单的功能。
如下:
   public class ConnectPool implements Pool  
   {  
           private PoolConn[] poolConns;     //存在Connection的数组   
           private int min;                             //连接池的最小连接数  
           private int max;                           //连接池的最大连接数  
           private int maxUseCount;            //一个连接的最大使用次数  
           private long maxTimeout;            //一个连接的最大空闲时间   
           private int maxConns;                 //同一时间的Connection最大使用个数   
           private Timer timer;                    //定时器              

           public boolean init()  
           {  
                  try  
                 {  
                         ……  
                         this.poolConns = new PoolConn[this.min];  
                         for(int i=0;i<this.min;i++)  
                         {  
                                PoolConn poolConn = new PoolConn();  
                                poolConn.conn = ConnectionManager.getConnection();  
                                poolConn.isUse = false;  
                                poolConn.lastAccess = new Date().getTime();  
                                   poolConn.useCount = 0;  
                                  this.poolConns[i] = poolConn;  
   			}  
   			//……  
   			return true;  
                  }  
                  catch(Exception e)  
                  {  
                         return false;  
   }  
   }  
   //……  
   private class PoolConn  
   {  
          public Connection conn;  
          public boolean isUse;  
   	  public long lastAccess;  
          public int useCount;  
   }  
   }  
 
场景二:解决一些非面向对象的语句块 : 写道
这些语句块包括if…else if…else语句,case语句,等等。这些语句都不是面向对象的,给我们造成了系统的扩展上的麻烦。我们可以看看,在模式中,有多少模式是用来解决由if语句带来的扩展性的问题。
Java编程中还有一个困扰我们的问题,那就是try…catch…问题,特别是在JDBC编程过程中。
 
场景之三:一些多算法场合 写道
假如我们有这样一个需求:我们的一个方法用来对数组排序并且依次打印各元素,对数组排序方法有很多种,用哪种方法排序交给用户自己确定。
对于这样一个需求,我们很容易解决。我们决定给哪些排序算法定义一个接口,具体的算法实现由用户自己完成,只要求他实现我们的接口就行。
 
场景之四:适当使用内部类,使得代码更加灵活和富有扩展性 写道
适当的使用内部类,可以使得你的代码更加灵活和富有扩展性。当然,在这里头起作用的还是一些模式的运行,但如果不配以内部类的使用,这些方法的使用效果就差远了。
 
 package polyFactory;   
    
 public interface Shape {  
 public void draw();  
 public void erase();  
    
 }   
 public class Square implements Shape {  
    
 public void draw() {  
         // TODO Auto-generated method stub  
        System.out.println("the square is drawing...");  
 }  
    
 public void erase() {  
         // TODO Auto-generated method stub  
        System.out.println("the square is erasing...");  
 }  
 private static class Factory extends ShapeFactory  
 {  
        protected Shape create()  
         {  
                return new Square();  
         }  
 }  
 static {ShapeFactory.addFactory("Square",new Factory());}  
    
 } 
分享到:
评论
1 楼 悲剧了 2011-06-28  
代码是否可以多一点

相关推荐

    Java内部类总结

    内部类主要分为四种类型: 1. **成员内部类**:作为外部类的一个成员存在,与外部类的属性、方法并列。成员内部类可以访问外部类的所有成员,包括私有的。它不能定义静态成员,但可以拥有实例成员。成员内部类的...

    第8周 内部类、lambda表达式、比较器.pdf

    内部类可以分为成员内部类、静态内部类、局部内部类和匿名内部类四种。 成员内部类是直接声明在外部类中的内部类,它可以直接访问外部类的成员变量和类变量,也可以直接调用外部类的成员方法和类方法。例如: ```...

    redis五种数据类型的使用场景

    在使用如INCRBY、DECR这类操作时,Redis内部会将存储的值转化为数值进行计算,此时RedisObject的encoding字段为int。这意味着在进行数值型操作时,String类型在Redis中实际上被当作整数处理,具有极高的效率。 ### ...

    FPGA 设计的四种常用思想与技巧

    ### FPGA设计中的四种常用思想与技巧 #### 一、引言 随着电子技术的发展,现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)因其灵活性和高效性成为了许多数字系统设计的核心。FPGA作为一种重要的硬件...

    Qt常用类介绍

    在Qt编程中,掌握常用类的使用是十分重要的基础。本文将详细介绍Qt中的两类基本组件:基本类和窗口类。 1. **基本类**:这类对象通常不从`QObject`派生而来,主要用于处理基本的数据结构,例如字符串、坐标、尺寸等...

    .NET 23种常用设计模式

    本文将详细介绍23种常用的设计模式,并通过具体的.NET代码示例来解释每种模式的基本概念及其应用场景。 #### 创建型模式 1. **Abstract Factory(抽象工厂模式)** - **定义**:提供一个接口用于创建一系列相关...

    一些常用的jar包

    内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类,每种都有其特定的使用场景和优势。例如,成员内部类可以访问外部类的所有成员,包括私有成员;局部内部类常用于匿名函数中,提供了一次性的...

    FPGA设计的四种常用思想与技巧

    在FPGA设计中,有四种常用的思想与技巧可以帮助开发者提高设计效率和系统性能。这些技巧包括乒乓操作、串并转换、流水线操作以及数据接口同步化。下面将逐一详细介绍这四种设计方法。 1. **乒乓操作**:乒乓操作是...

    Android常用的工具类

    本篇文章将详细介绍Android常用的工具类,包括APP管理类、Dialog类、File类、Gson解析类、Toast类以及网络类。 首先,我们来探讨APP管理类。这类工具通常包含了对应用程序状态的管理和控制,例如检查应用是否处于...

    Java常用类源码

    在Java编程语言中,了解和研究常用类的源码对于提升编程技能至关重要。Java的类库丰富多样,包含了大量预定义的类,这些类提供了许多基础功能,方便开发者快速构建应用程序。本文将深入探讨几个Java中常用的类,包括...

    FPGA设计的四种常用思想与技巧.pdf

    ### FPGA设计的四种常用思想与技巧 #### 一、引言 随着电子技术的发展,现场可编程门阵列(Field Programmable Gate Array, FPGA)作为一项关键的技术,在许多领域都有着广泛的应用,例如通信、航空航天、消费电子等...

    c#几种常用的设计模式

    以上四种设计模式在实际开发中有着广泛的应用。单例模式用于控制类的实例数量;观察者模式用于实现松耦合的事件通知;工厂方法模式使类的实例化过程延迟到子类,增强了灵活性;抽象工厂模式则帮助在不同环境或配置下...

    java常用的二十三种设计模式

    工厂模式是一种常用的创建型设计模式,它的核心思想是通过一个专门的类(即工厂类)来负责创建对象,而不是直接通过new关键字实例化对象。这种方式使得系统的扩展更加灵活。当系统中的产品类别增加时,只需修改工厂...

    最常用的四种数据分析方法

    ### 最常用的四种数据分析方法及统计分析详解 #### 一、数据分析方法概述 数据分析是指通过科学的方法、过程和技术,从大量数据中提取有用的信息,并形成有价值的结论。数据分析的主要目的是揭示隐藏在大量数据...

    PHP常用工具类大全附全部代码下载

    开发者在使用这些工具类时,还应该注意代码的维护更新,确保随着系统环境的变化,相关工具类仍能够正常工作。例如,邮件服务器的配置信息可能会有变动,文件遍历的逻辑可能需要调整以适应新的目录结构等。

    .net常用开发类 .net常用类 全都 是精华,累计

    `AppConfig`类提供了一种简单而强大的方式来读取和修改这些文件中的设置。这对于需要动态调整应用程序行为的场景非常有用,比如改变数据库连接字符串、调整日志级别等。掌握了这些知识后,开发者可以更加灵活地管理...

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    常用内部排序算法的比较与选择

    根据给定的文章摘要和部分内容,本文旨在探讨内部排序算法,并对常见的几种内部排序方法进行比较与选择,以帮助读者理解不同排序算法的特点及其适用场景。接下来,我们将详细展开这一主题。 ### 排序的基本概念 ##...

    c#常用通用操作方法类

    ### C#常用通用操作方法类知识点详解 #### 1. 创建自定义DataTable 在C#开发中,`DataTable`是处理数据的一种非常重要的方式。它提供了类似数据库表的数据结构,可以方便地存储、检索和操作数据。对于经常需要创建...

Global site tag (gtag.js) - Google Analytics