28个案例问题分析---18---开门例子理解面向对象--面向对象

文章通过一个公司老板开门的例子,对比了面向过程和面向对象的编程思想。面向过程的实现中,行政人员告知老板钥匙位置,老板自行开门;而面向对象中,行政人员作为对象有开门方法,老板发送消息触发开门。面向对象的代码虽然复杂,但更利于复用和扩展,如新增主管开门需求时,面向对象能更好地管理代码。

背景

本文将通过一个例子,分别给出,面向过程和面向对象两种方式进行不同的实现。通过这个例子带领大家理解,学习。什么是面向对象,什么是面向过程。
业务背景
公司老板来到公司,需要行政人员为其打开办公室的门。
两种实现思路

  1. 面向过程
    行政人员告诉老板钥匙在哪,老板到公司后,拿上钥匙去开门。
  2. 面向对象
    行政老师负责管理钥匙,拥有开门方法,接受消息方法。
    老板拥有发送消息方法。

思路&方案

面向过程实现

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();
    }

这种方法写的代码,看起来就比面向过程的复杂,那这个代码有什么好处吗?
复用:
假设我们现在有了新的需求,主管来了也需要行政开门。我们使用面向对象的写法。这个开门的行政就可以进行复用了。但是如果是面向过程,那么就无法复用。必须重新从头写。需求多了就无法管理了。

总结

一个简单的例子,既可以体现面向对象和面向过程的不同,这两者没有好坏之分,要视情况而进行选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝老三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值