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

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

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

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

     

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

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

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

  • 相关阅读:
    字符串函数---atof()函数具体解释及实现(完整版)
    curl的简单使用
    [7] 算法之路
    springMVC3.0(文件上传,@RequestMapping加參数,@SessionAttributes,@ModelAttribute,转发,重定向,数值获取,传參,ajax,拦截器)
    hdu 1754 I Hate It 线段树 点改动
    经典的7种排序算法 原理C++实现
    自己定义View实现水平滚动控件
    centos编译ffmpeg x264
    工作脚本处理文本
    A*寻路算法
  • 原文地址:https://www.cnblogs.com/wavky/p/3473177.html
Copyright © 2011-2022 走看看