背景
本文将通过一个例子,分别给出,面向过程和面向对象两种方式进行不同的实现。通过这个例子带领大家理解,学习。什么是面向对象,什么是面向过程。
业务背景
公司老板来到公司,需要行政人员为其打开办公室的门。
两种实现思路
- 面向过程
行政人员告诉老板钥匙在哪,老板到公司后,拿上钥匙去开门。 - 面向对象
行政老师负责管理钥匙,拥有开门方法,接受消息方法。
老板拥有发送消息方法。
思路&方案
面向过程实现
public class Client {
public static void main(String[] args) {
System.out.println("老板:我需要开门");
System.out.println("行政:老板,钥匙放在前台了,您开一下吧");
System.out.println("老板:去前台拿钥匙自己去开门了");
}
}
面向过程的实现,完成之后,只能解决某个特定的问题。好处是速度很快。
面向对象实现
行政类(接受消息人)
public class ReceiveMessager {
private void openDoor(){
System.out.println("我是行政:我来开门了");
}
public void receiveMessage( ){
this.openDoor();
}
}
老板类(发送消息人类)
public class SendMessager {
public void sendMessage(ReceiveMessager receiveMessager){
System.out.println("我是老板:我需要开门");
receiveMessager.receiveMessage();
}
}
业务封装类
public class Notice {
private void business(){
ReceiveMessager receiveMessager=new ReceiveMessager();
SendMessager sendMessager =new SendMessager();
sendMessager.sendMessage(receiveMessager);
}
public void notice(){
this.business();
}
客户端
public class Client {
public static void main(String[] args) {
Notice notice = new Notice();
notice.notice();
}
这种方法写的代码,看起来就比面向过程的复杂,那这个代码有什么好处吗?
复用:
假设我们现在有了新的需求,主管来了也需要行政开门。我们使用面向对象的写法。这个开门的行政就可以进行复用了。但是如果是面向过程,那么就无法复用。必须重新从头写。需求多了就无法管理了。
总结
一个简单的例子,既可以体现面向对象和面向过程的不同,这两者没有好坏之分,要视情况而进行选择。
文章通过一个公司老板开门的例子,对比了面向过程和面向对象的编程思想。面向过程的实现中,行政人员告知老板钥匙位置,老板自行开门;而面向对象中,行政人员作为对象有开门方法,老板发送消息触发开门。面向对象的代码虽然复杂,但更利于复用和扩展,如新增主管开门需求时,面向对象能更好地管理代码。
2002

被折叠的 条评论
为什么被折叠?



