写在前面:本人近期在看《大话设计模式》这本书。书里是用C#解说的实例。如今写心得笔记与大家分享,就试着写一个JAVA版的。样例还是书里的样例。只是是Java语言实现的。后面也会给出本人的一些理解建议。谢谢《大话设计模式》的作者。
一、什么是单一职责原则?
今天要说的是单一职责原则。这个应该比較好理解。所谓单一职责。就一个类而言,应该仅有一个引起它变化的原因。也就是说它仅仅做简单的一件事,仅仅是做好自己的本质工作其它尽量不去參与。
在我们设计类的时候,我们往往还没有好好思考就開始编码了。这是个不好的习惯。
磨刀不误砍柴工。我们应该把业务逻辑理清。把交互的代码和逻辑代码分离开,然后再把逻辑代码依据分工分离开。前提是他须要一个类,也就是有一个能引起这一部分代码变化的原因。那这部分代码就能够单独成类。因为大部分ITer(IT人士)開始接触编程时用的是C语言这样的过程化的程序设计,又因为,我们人类习惯按步骤按方法去做事,所以编程时首先想到的就是方法,而不是类。在面向对象的语言中类是程序的最小单位。所以我们要锻炼自己的抽象思想,万物皆类。不管抽象的事物还是详细的事物都能够是一个类。
设计模式。事实上不是什么非常高深的东西。仅仅是我们没有去总结而已。有过多年开发经验的老鸟们去看设计模式。他会笑而不语。由于这些他们差点儿都用过。仅仅是没有给出一个名字而已。
设计模式,事实上真的是非常高深的东西。由于从哲学的角度(不要骂我。我仅仅是宣扬一下马克思的课有点用)来看,它不仅适用于编程。还适用于生活。就像我们ITer。谁都知道,假设我们立志在IT行业奋下去,一定要找一个方向,要做好我们的本质,不能今年做程序猿,明年做销售吧。
不然你什么都做不好。还有就是朝着一个方向走,就像android,ios, wp, javaweb, .net等等。太多了你要是什么都去搞。十年你也是什么都会什么都不精。假设你仅仅搞android。一天一个知识点,一天一个小项目,7天一个大点的项目。一年之后,你绝对是大牛。
二、代码实例
闲话少说,上实例(手机拍照)。
一般的设计:
Phone.java
public class Phone {
private float width;
private float height;
private float thick;
public void takePhoto() {
System.out.println("Take a photo");
}
public void makeCall() {
System.out.println("Make a call");
}
public void sendMessage() {
System.out.println("Send a message");
}
public void playMusic() {
System.out.println("Play a music");
}
}
事实上能够这样做:
Camera.java
public interface Camera {
public void takePhoto();
}
Mp3.java
public interface Mp3 {
public void playMusic();
}
Phone.java
public class Phone implements Camera, Mp3 {
private float width;
private float height;
private float thick;
public void makeCall() {
System.out.println("Make a call");
}
public void sendMessage() {
System.out.println("Send a message");
}
public void playMusic() {
// TODO Auto-generated method stub
System.out.println("Play a music");
}
public void takePhoto() {
// TODO Auto-generated method stub
System.out.println("Take a photo");
}
}
三、小结
虽说单一职责原则非常使代码非常清晰,能够解决一个类过于庞大的问题,可是真的不能乱用。
用的过分了,可能会使你的程序分崩离析。这样就得不偿失了。一句话,面向对象面向对象。找个对象面向面向就会了。
别雪没对象,咱能够去new啊。要多少有多少。