背景
本文将通过一个例子,分别给出,面向过程和面向对象两种方式进行不同的实现。通过这个例子带领大家理解,学习。什么是面向对象,什么是面向过程。
业务背景
公司老板来到公司,需要行政人员为其打开办公室的门。
两种实现思路
面向过程
行政人员告诉老板钥匙在哪,老板到公司后,拿上钥匙去开门。
面向对象
行政老师负责管理钥匙,拥有开门方法,接受消息方法。
老板拥有发送消息方法。
思路&方案
面向过程实现
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(); }
这种方法写的代码,看起来就比面向过程的复杂,那这个代码有什么好处吗?
复用:
假设我们现在有了新的需求,主管来了也需要行政开门。我们使用面向对象的写法。这个开门的行政就可以进行复用了。但是如果是面向过程,那么就无法复用。必须重新从头写。需求多了就无法管理了。
总结
一个简单的例子,既可以体现面向对象和面向过程的不同,这两者没有好坏之分,要视情况而进行选择。