java类的设计原则
1、内聚性
类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个连贯性的目标。例如:学生和教职工属于不同的实体,应该定义两个类。
2、一致性
要遵循一定的设计风格和命名习惯。给类、方法、数据域选择有信息量的名字。流行的风格是将数据声明置于构造方法之前,并将构造方法置于方法之前。
选择的名字要保持一致,给类似的操作选择不同的名字并非好的习惯。
如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法。
3、封装性
用private修饰符隐藏其数据域,以免用户直接访问。如果想让数据域可读,可以使用get方法,如果想让数据域可更新,可以使用set方法。
4、清晰性
类应该有一个很清晰的合约,易于解释和理解。
方法应在不产生混淆的情况下凭直觉来定义。
不应该声明一个来自其他数据域的数据域。
5、要用类名来引用静态变量和方法。
6、不要从构造方法中直接传参数初始化静态数据域。最好使用静态的set方法改变静态数据域。
7、类修饰符private(只能在本类中访问),default(默认的只能在同一个包中访问), protected(可以被同一个包中的类以及子类访问),public(不同包中的类也可以访问) 。 子类只能扩大父类中的可访问性,而不能削弱父类中的可访问性。
8、final 表示一个类是终极的,是不能做父类的。同理,一个终极的方法不能被它的子类覆盖。
java类的设计原则的更多相关文章
- 菜鸡的Java笔记 简单JAVA 类的开发原则以及具体实现
/* 现在要求定义一个雇员信息类 在这个类之中包含有雇员编号 姓名 职位 基本工资 佣金等信息 对于此时给定要求实际上就是描述一类事物,而这样的程序类在在java之中可以将其称为简单java类 ...
- Java设计模式学习——设计原则
第一章 设计原则 1.开闭原则 一个软件实体,像类,模块,函数应该对扩展开放,对修改关闭 在设计的时候,要时刻考虑,让这个类尽量的好,写好了就不要去修改.如果有新的需求来,在增加一个类就完事了,原来的 ...
- java设计模式和设计原则
一.创建型模式 1.抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.2.生成器模式(Builder patter ...
- Java 面向对象的设计原则
一. 1.面向对象思想的核心: 封装.继承.多态. 2.面向对象编程的追求: 高内聚低耦合的解决方案: 代码的模块化设计: 3.什么是设计模式: 针对反复出现的问题的经典解决方案,是对特定条件下( ...
- Java类的设计----Object 类
Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: ...
- Java类的设计----关键字super
关键字super 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 su ...
- Java类的设计----访问控制
访问控制 可以对Java类中定义的属性和方法进行访问控制----规定不同的保护等级: public.protected.default.private //仅在类的内部可以访问. private St ...
- Python 类的设计原则
# 面向对象遵循的原则: SOLID # S(Single Responsibility Principle) # 单一职责原则 # 一个类只负责一项职责 # 好处 # 易于维护, 写出高内聚的代码 ...
- Java类的设计----多态性及其应用
多态性及其应用 多态性 多态—在Java中,子类的对象可以替代父类的对象使用一个变量只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Stude ...
随机推荐
- JPA原理与实践、多数据源配置
参考博客: https://segmentfault.com/a/1190000015047290?utm_source=Weibo&utm_medium=shareLink&utm_ ...
- div包裹页面后多余部分没有显示,也没滚动条 overflow 属性设置
今天弄个div套着一个页面结果那个页面超出范围后页面没有滚动条可以滚动浏览下面的内容,原来是设置了overflow的hidden属性 visible 默认值.内容不会被修剪,会呈现在元素框之外. hi ...
- (转) Supercharging Style Transfer
Supercharging Style Transfer Wednesday, October 26, 2016 Posted by Vincent Dumoulin*, Jonathon Shl ...
- addEventListener在一个节点上添加多个相同的事件
<button id='btn'>attachEvent</button> window.onload=function(){ var Obtn = document.getE ...
- (转载)Windows下小狼毫输入法(Rime)的安装与配置(含导入搜狗词库)
div id="cnblogs_post_body" class="blogpost-body"> 最近彻底烦透了搜狗拼音输入法的各种流氓行为,自动升级不 ...
- 说明Heap与stack的差别。
Heap 是堆,Stack 是栈. 栈与堆都是Java用来在Ram中存放数据的地方,与C++不同,Java会自动管理栈与堆,程序员不能直接设置栈与堆. Java的堆是一个运行时的数据区,类的对象从中分 ...
- SQL语句执行的顺序机制
From Where Group by Having Select 表达式 Distinct ORDER BY TOP/OFFSET-FETCH
- c# 重试机制
protected async Task<T> TryOperation<T>(int maxRetryCount,Func<Task<T>> func ...
- SAP月末结账年结流程
SAP月末结账年结流程 SAP月末结账操作指南 流程描述:FI期末结帐流程包括应收帐款.应付帐款.固定资产.管理会计结帐.总帐结帐等一系列结帐过程,对于年结增加了余额结转及固定资产年度改变等动作,通过 ...
- [osg][原]自定义osgGA漫游器
相机矩阵变化基础:http://blog.csdn.net/popy007/article/details/5120158 osg漫游器原理:http://blog.csdn.net/csxiaosh ...