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

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

背景

本文将通过一个例子,分别给出,面向过程和面向对象两种方式进行不同的实现。通过这个例子带领大家理解,学习。什么是面向对象,什么是面向过程。

业务背景

公司老板来到公司,需要行政人员为其打开办公室的门。

两种实现思路


面向过程

行政人员告诉老板钥匙在哪,老板到公司后,拿上钥匙去开门。

面向对象

行政老师负责管理钥匙,拥有开门方法,接受消息方法。

老板拥有发送消息方法。

思路&方案

面向过程实现

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

这种方法写的代码,看起来就比面向过程的复杂,那这个代码有什么好处吗?

复用:

假设我们现在有了新的需求,主管来了也需要行政开门。我们使用面向对象的写法。这个开门的行政就可以进行复用了。但是如果是面向过程,那么就无法复用。必须重新从头写。需求多了就无法管理了。


总结

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


目录
打赏
0
0
0
0
258
分享
相关文章
Arthas本身并没有提供直接让进程结束时自动生成火焰图的配置
【2月更文挑战第31天】Arthas本身并没有提供直接让进程结束时自动生成火焰图的配置
265 2
给 element-plus 增加一个防抖的功能(二)
element-plus 功能非常强大,但是好像只有 el-autocomplete 提供了一个防抖功能,其他表单子控件并没有提供防抖功能,而 el-autocomplete 的防抖和我想要的效果又不太一样,所以只好写个函数实现我想要的防抖效果。
Web服务器安全最佳实践
【8月更文第28天】随着互联网的发展,Web服务器成为了企业和组织的重要组成部分。然而,这也使得它们成为黑客和恶意软件的目标。为了确保数据的安全性和系统的稳定性,采取适当的安全措施至关重要。本文将探讨一系列保护Web服务器的最佳策略和技术,并提供一些实用的代码示例。
664 1
AI时代浪潮来袭,项目经理如何应对?
AI时代,项目经理如何顺势而为、保持核心竞争力?从角色升级到技能转型,文章揭示AI对项目管理的深刻影响,并提供项目经理应对未来的关键策略。
184 4
在Linux中,如何使用Snort进行入侵检测和防御?
在Linux中,如何使用Snort进行入侵检测和防御?
求助: 运行模型时报错module 'megatron_util.mpu' has no attribute 'get_model_parallel_rank'
运行ZhipuAI/Multilingual-GLM-Summarization-zh的官方代码范例时,报错AttributeError: MGLMTextSummarizationPipeline: module 'megatron_util.mpu' has no attribute 'get_model_parallel_rank' 环境是基于ModelScope官方docker镜像,尝试了各个版本结果都是一样的。
531 5
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
vue3引入vant完整步骤
vue3引入vant完整步骤
759 8
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
342 1
Linux挂载硬盘的详细步骤与实例
Linux挂载硬盘的详细步骤与实例
671 0

热门文章

最新文章

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问