zoukankan      html  css  js  c++  java
  • 如何设计构造函数

    构造函数是一般类对象的入口点,Java允许构造函数直接相互嵌套调用(本例中不讨论父类构造函数继承性调用问题),当设计出一个相对复杂庞大,成员变量比较多的类的时候,如何安排布局多个构造函数方法体内容,减少代码拷贝,实现优质的成员变量初始化过程,每次都会让我十分纠结,直到现在还是。

    也许一些优秀的框架代码或编程思想、代码之禅、编程艺术、编程匠艺、码农后花园等等这类书籍中,会蕴含关于这方面的更好的解决方案,但我目前情况看来,对优秀源代码的阅历尚浅,无法思索得出相关结论,总结一个字,懒。。

    最近花了一段时间,在不断整理几个类的时候,偶然觉得自己想通了一些关于这方面的设计方式,姑且总结了一下,算是模式的一种吧

     

    在类中设计如下三个(三种)经典构造函数:

    • 最小必要参数,体现为形参列表最短的构造方法,包括无参构造函数,方法体中包含初始化所有必要的核心成员变量(可能通常声明为 final 类型),优先考虑调用setter方法初始化参数
    • 最大可设置参数,体现为形参列表最长最复杂的构造方法,方法体中包含初始化所有成员变量,提供最细微最全面的成员变量自定义指定,调用上面的 最小必要参数构造函数 初始化核心参数项,并选择性的提供参数 null 值支持,优先考虑调用setter方法初始化参数
    • 常用参数组,体现为形参列表中等长度的构造方法,调用上面的 最大可设置参数构造函数 ,选择性初始化常用参数项,根据实际需要可设置复数个此类构造方法,适应有限的多种常用用例场景。

    实际上这种设计方式应用在工厂模式上更合理,不过简单的情况讨论差不多就这样子吧。

  • 相关阅读:
    statusStrip控件上的项目靠右对齐
    HTML基础——列表(一)
    HTML基础——HTML基本要素(二)
    HTML基础——文字格式设置
    HTML基础----HTML基本要素(一)
    web下载的dll文件无法加载进项目
    Silverlight加载第一个Map
    ArcGIS API for Silverlight map中添加graphic对象(文字、几何图形、图片)
    BackgroundWorker控件使用(一)
    Winform程序实现COM口通信
  • 原文地址:https://www.cnblogs.com/wavky/p/3473177.html
Copyright © 2011-2022 走看看