java基础两点原则编程原则_java 编程原则汇编

在看设计模式突然一实验室大牛问我变成原则看过吗?我一下子蒙了。确实没有看过,遂上网搜集资料总结了一下:

1避免创建不必要的对象

String s=new String("stringette"); //don't do this

改语句每次执行的时候都会创建一个String的实例,若改语句被频繁的调用,就会出现成千上万的不必要的String实例.改进后的版本:

String s="stringette";

2接口优与抽象类.复合优先继承..

3不要在新的代码中使用原生态类型.最后使用包装类.,优先考虑泛型.

4优先考虑安全类的容器类.

5用enum代替int常量

6坚持使用override注解.

7不用用String拼接字符串,多用StringBuffer

8在有异常的情况下使用异常,优先使用标准的异常,避免过多的在一个方法里嵌套多个异常.并努力是失败保持原子性,更不要忽略了异常,在

9 for -each 循环优先传统的for循环,

10不要写过长的方法,最后有清楚的注释,遵守普遍接受的命名规则

11注意线程安全的问题,主要是变量共享和线程同步这两个方面

12尽量不要使用线程组.应为它不安全

13注意对象的序列化.

基本原则:

(1)开闭原则:

一个软件实体应对扩展开放,对修改封闭。其中抽象化是关键。

“开-闭”原则如果从另外一个角度讲:就是所谓的“对可变形的封装可见”,即:找到一个系统的可变因素将之封装。

“对可变性的封装”意味着两点:

1.一种可变性不应当散落在代码的很多地方,而应当被封装到一个对象里面。同一个可变性的不同表象意味着同一个集成登记结构中的具体子类。继承应当被看作是封装变化的方法,而不应当被看作是从一般对象生成特殊的对象的方法。

2.一个可变性不应当与另一个可变性混合在一起。

(2)里氏代换原则:

一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且他根本不能觉擦到积累对象和子类对象的区别。

里氏代换原则世纪城服用的基石。只是当子类可以替换掉基类,软件单位的功能不会受到影响时,基类才能被真正的复用。而子类才能够在积累的基础上增加新的方法。

(3)依赖倒转原则:

实现“开-闭”原则的挂念是抽象化,并且从抽象化到处具体化实现,如果说“开-闭”原则是面向对象设计的目标的话,依赖倒转原则就是这个面向对象设计的主要机制。

依赖倒转原则讲的是:要依赖于抽象,不要依赖于具体。

依赖倒转原则是COM,CORBA,JavaBean 以及EJB等构建设计模型背后的基本原则。

在面向对象的系统中,两个类之间可以发生三种不同的依赖(耦合)关系:

1.零耦合:如果两个类之间没有耦合关系,

2.具体耦合:具体耦合发生在两个具体(可实例化的)类之间,经由一个类对另一个累的直接引用造成。

3.抽象耦合:发生在一个具体类和一个抽象类(或接口)之间,是两个必须发生关系的类之间存在最大的灵活性。

依赖倒转原则要求客户端依赖于抽象耦合。依赖倒转原则的表述是:抽象不应该依赖细节,细节应该依赖抽象。另一种表述是:要针对接口编程,不要针对实现编程。针对接口编程的意思是:应当使用java接口和抽象java类进行变量的类型声明、参数的类型声明、方法的返回类型声明,以及数据类型的转换等。要保证做到这一点,一个具体java类应当事先java接口和抽象java类中声明过的方法,而不应当给出多余的方法。

变量被声明时的类型叫做变量的静态类型,变量所引用的对象的真实类型叫做变量的实际类型,在很多情况下,一个java程序所需引用一个对象,这个时候如果这个对象有一个抽象类行的话,应当使用这个抽象类型作为变量的静态类型,这就是针对接口编程的含义。

(4)接口隔离原则

接口隔离原则是说:使用多个专门的接口比使用单一的总接口要好。换言之,从一个客户累的角度讲,一个类对另外一个类的依赖性应当是简历在最小的接口上。

一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演相当于接口的实现。因此一个借口应当简单的代表一个角色,如果系统涉及到多个角色的话,那么每一个角色应当由一个特定的接口代表。

(5)合成聚合复用原则

合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些镀锡iangde委派达到复用已有功能的目的,这个设计原则有另一个更简短的表述:尽量使用合成/聚合,尽量不使用继承。

合成/聚合的好处:

1.新对象存取成分对象的唯一方法是通过成分对象的接口。

2.这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的。

3.这种复用支持包装。

4.每一个新的类可以将焦点集中在一个任务上。

5.这种复用可以在运行时间内动态运行,新对象可以动态地引用与成分对象类型相同的对象。

继承复用的好处:

1.新的实现较为容易,因为超类的大部分功能可以通过继承关系自动进入子类。

2.修改或扩展继承而来的实现较为容易。

继承复用的缺点:

1.继承复用破坏包装,因为继承将超类的实现细节暴露给子类。由于超累的内部细节常常是对子类透明的,因此这种复用是透明的复用,又称为白盒复用。

2.如果超类的实现发生改变,那么子类的实现也不得不发生改变,因此当一个基类发生改变时,这种改变会印象到它一级一级的子类,使设计师不得不相应地改变这些子类,以适应超类的变化。

3.从超类继承而来的实现是静态的,不可能在运行时间内发生改变,因此没有足够的灵活性。

导致错误的使用继承而不是合成/聚合的一个常见的原因是错误的把“Has-A”当作“is-a”后者代表一个类是另一个类的一种,前者代表一个类是另一个类的一个角色,而不是另一个类的特殊种类。

(6)迪米特法则

即最少知识原则,就是说一个对象应当对其他的对象有尽可能少的了解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值