zoukankan      html  css  js  c++  java
  • Java面向对象设计最佳实践 内置类设计 3

    “代码-3 ”中的实例内置类利用外层类 OuterClass3 中的模板参数 T ,作为 setData 参数的类型。

    看似类内置类和实例内置类已经足够使用了。考虑这么一 个场景,一个方法利用了内置类来实现功能,这个方法中的变量需要被内置类来利用,通常可以把变量作为参数,传入内置类构造器或者其方法中,这也是通常的方 法。不过利用 布局 内置类(Local Class) 更为方便,因为局部内置类是在块中(方法也 是一种特殊的块)定义的,这样就很好的解决了上下文的参数传递问题。

    参看代码:

    package  org.mercy.design;

    /**

      *   OuterClass4   是外层类,Printer   局部内置类

      *  

      *   @author   mercyblitz

      */

    public   class  OuterClass4 {

    public   void  print( byte [] bytes) {

    final  String message =  new  String(bytes);

    /**

      *   名为Printer   LocalClass,不必把message作为参数传递。

      */

    class  Printer {

    private   void  doPrint() {

    System. out .println(message);

    }

    }

    new  Printer().doPrint();

    }

    public   static   void  main(String[] args) {

    new  OuterClass4().print( "AAAAAAA" .getBytes());

    }

    }

    代码 -4

    在“代码-4”的示例中,有人可能会说,这看不出什么好处呀?!如果内 置类依赖的变量超过4个(Effective Java书中提到超过四个参数的话,不利于维护),那么局部内置类是不是方便维护呢?

    顺便提到,匿名内置类是局部内置类的一种。

    不难发现,局部内置类的缺点是代码混杂(方法和类混在一起),如果依赖 局部变量不多的情况下,在一定程度上面,增加了维护成本。

    (其他内容,见附件)

  • 相关阅读:
    python学习笔记之--read、readline和readlines
    目录操作习题
    递归习题
    文件操作练习题
    HandleBase句柄的5种写法
    ContextBase
    BasegoSort
    PrototypePra原型_设计订单保存
    DesignPattenTemplate模板模式
    DesignPattenStrategy策略模式
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400270.html
Copyright © 2011-2022 走看看