面向对象拾遗

面向对象拾遗

最近看了一些架构方面的书《软件架构与模式》和《架构整洁之道》,十分喜欢,顺便记录下看了之后我对面向对象的一些不成熟的小想法

why面相对象  

面向对象为了解决软件开发过程中的的解耦、扩展、重用的问题而诞生的。
《架构整洁之道》书中对面向对象的定义是:

面向对象编程就是以多态为手段来对源代码中的依赖关系进行控制的能力,这种能力让软件架构师可以构建出某种插件式架构,让高层策略性组件与底层实现性组件相分离,底层组件可以被编译成插件,实现独立于高层组件的开发和部署。

面向对象的特性

面向对象有如下的几个特性

  • 抽象
  • 继承
  • 封装
  • 多态

虽然这些是面向对象的特性,但是不仅仅只是面向对象的特性。
封装特性在C语言中可以使用结构体实现,使用头文件声明、实现文件中实现的方式可以做到很好的封装特性。当然在面向对象的语言中,加入了各种级别的访问控制,能够做到更加细粒度的封装。
继承特性在C语言中结构体也可以实现,比如结构体A具有两个double类型的属性x,y,结构体SpecialA具有两个两个double类型的属性x,y和一个char *类型的属性,这样可以吧结构体SpecialA类型强制转换为构体A类型使用,因为前部分的内存布局是一致的。当然这是一种投机取巧的方法,可操作性比起面向对象中的继承还是处于劣势的。
多态的特性在C语言中也可以通过函数指针的方式进行差异化的处理,不过相比较于面向对象中的多态来说,函数指针的调用从易用性和安全性这两方面来说都是出于劣势的。

Why抽象

为了实现解耦,设计原则告诉我们需要面向抽象编程而不是面向具体编程,面向接口编程而不是面向实现编程。如果高层的模块对底层的模块有依赖,那么,需要对底成模块进行抽象,让高层模块依赖或者聚集底成模块的抽象接口。此外让具体的底成模块实现这个接口,这样做到了解耦,其实这就是__依赖倒置原则__。

Why继承、多态

面向对象原则中的多态的基础就是继承,使用父类的引用管理不同的子类,调用相同的方法而实现不同的功能,如此实现了软件的可扩展,这就是多态的魅力,而基础正是继承

Why封装

我实现多态的继承体系中,高层模块因为并不了解底层模块的具体实现,在具体的底成模块中,针对不同的实现,底成模块拥有自己的私有方法,私有属性,来完成对应的任务,这里面所体现的就是封装。 

转载于:https://my.oschina.net/FEEDFACF/blog/3046753

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值