面向对象编程的一些应该遵循的东西

[b][/b] [b]1.面向接口和抽象编程,而不要编程到类,这分离了接口与他们的实现。[/b]
比如:有一个Circle类,我们需要调用其draw方法来画圆。一种面向具体的写法就是:
Circle circle = new Circle();
circle.draw();
而设计模式告诉我们,应该面向接口编程,我们让Circle继承Sharp接口,然后写成这样:
Sharp sharp = new Circle();
sharp.draw();
这样,代码之间的耦合度就降低了,加入新的图形比如Line的时候,并不用去修改实现代码。
我想说的一点是,不要过度使用接口,这也是敏捷编程提倡的,比如说只有一个图形,那么就不需要接口了,接口是相似类型的相同实现,当没有相似类型的时候,没必要使用接口,抽象类同理。接口应尽量保持为最小程度。

[b]2.优先组合而非具体继承性。[/b]
继承性会产生数量庞大的子类和他们之间的耦合关系,业务逻辑简单还好。如果复杂一些,纯用继承会造成整个代码高耦合,难于维护。
比如:现在有3个图形,圆,直线,正方形。有3种绘制他们的方法,分别为d1,d2,d3。如果用继承,会产生3x3=9个子类,来实现绘制图形的类。如果再增加算法和图形,会产生更多的类,而且子类基本不能重用,只能耦合到特定的图形和算法上面。

[b]3.合并方法参数[/b]
把一个方法的参数封装到单个对象中,这样可以提高代码的易读性,并简化调用代码.考虑下面的例子:
public void mutiPara(String para1,String para2,String para3);
通过把这些多个参数组合为单个对象,我们可以简化这个方法:
public void singlePara(Options options);
public class Options{

private String para1;
private String para2;

}
更复杂的还可以有多个Options,可以设计一个统一的接口进行调用.

[b]4.消除代码重复[/b]
代码重复对维护来说是致命的,通常也体现了开发中的时间浪费.关于重构,可以参考Martin Fowler的书"重构-改善既有代码的设计".
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值