Effective JAVA 第三期

类和接口是java程序设计语言的核心,也是java的基本抽象单元。

将类和接口应用好可以更好的利用java提供的基本元素,下面的几条方法可以有效的帮助到我们使用好java的类和接口。

 

第一:使类和成员的可访问性最小化:

 

       Java通过封装和修饰符等手段限制访问权限,尽量降低类的可访问性,可以降低风险,应成员变量和成员方法的访问权限降低,尤其是成员变量,尽量使用private修饰,如果不是很有必要,不要使用成员变量,成员变量在并发条件下容易引发线程安全问题,为了防止出现这种问题,使用同步等方式会增加开销。

 

       访问级别有如下四种:

1.       私有;

2.       包级私有;

3.       受保护的;

4.       公有的。

 

第二:在共有类中使用访问方法而非公有域:

      

       公有类不应该暴露可变的域。

如果类可以在它所在的包的外部进行访问,就提供访问方法,已保留将来改变该类的内部表示法的灵活性,如果暴露了数据域,要想在将来改变其内部表示法是不可能的了。

虽然让公有类暴露不可变的域危害比较小。但是,有时候还是需要用包级私有或者私有的嵌套类来暴露域,不管类是否可变。

 

 

第三: 复合优先于继承:

      

       继承是实现代码重用的有力手段,但并非永远是完成这项工作的最佳工具。使用不当则会导致软件变得脆弱。

       继承打破了封装性,也就是说,子类依赖于父类中特定功能的实现细节。因此可能会发生变化,子类也就会被破坏。

       故继承被认为是破坏封装性的表现。

 

第四:要么为继承而设计,并提供文档说明,要么就禁止继承

 

第五:接口优于抽象类,接口只用于定义类型 

       Java不支持多继承,可以通过接口定义规则,类实现接口,重写接口里面的方法,这种方法比通过继承抽象类更好,当一些类有很多公共逻辑的时候,可以考虑放在抽象类中,注意抽象类是无法实例化的,切记接口的职责要单一!!!如果接口中定义规则(接口中的方法),类可能会Override一些没有必要重写的方法。

       接口中有一种接口被称为常量接口,这种接口没有任何方法,只包含静态的final域,每个域都导出一个常量。使用这些常量的类实现这个接口,以避免用类名来修饰常量名。

       接口应该只被用来定义类型,不应该用来导出常量。

 

第六:类层次优于标签类

       标签类中存在这很多缺点,他们中充斥着样板代码,枚举声明等,内存也占用多了,不仅破坏了程序的可读性,还可能使程序崩溃。

 

第七:用函数对象表示策略:

 

第八:优先考虑静态成员类

       嵌套类有四种:静态成员类,非静态成员类,匿名类和局部类。

上述的四种都有自己的用途,如果成员类的每个实例都需要一个指向其外围实例的引用,就要把成员类做成非静态的,否则为静态的。

 

 

 

全部评论

相关推荐

点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务