除此以外,面向对象技术经过几十年的发展,体系已经很庞大,包括面向对象编程语言、设计模式、UML、设计原则等, 如何在具体的开发项目中将这些技术融会贯通,最终帮助我们更好的完成项目,也是程序员们面临的一大难题。
《面向对象葵花宝典:思想、技巧与实践》一书,基于作者多年的学习、思考、实践、总结,将从多个角度来全面解读面向对象技术,力争让读者做到“知其然知其所以然”,并能够在项目实践中应用面向对象技术来指导我们进行更高效更优质的开发。
本期的社区问答 ( 12月 22 日— 12月 30日)我们请来了 《面向对象葵花宝典:思想、技巧与实践》一书的作者 李运华(ID: yah99_wolf)为大家解答关于面向对象技术方面的问题。
嘉宾简介
李运华
十余年软件设计开发经验,经历了电信行业和移动互联网行业,曾就职于华为和UCWEB,先后担任软件开发工程师、系统分析师、架构师等角色;
现担任阿里巴巴移动事业群(原UCWEB)资深软件工程师,主要负责架构设计、架构重构、技术团队管理、技术培训。
技术上专注于Linux、MySQL、开源技术、系统分析、架构设计,有丰富的需求分析、系统设计、编程的实战经验。喜欢寻根究底,探究技术的原理和本质;每每有所得,喜欢总结下来并分享到博客。
虽然热爱技术,但不拘泥于技术,涉猎群书,勇于挑战,从各方面不断提升自己。
专家博客: http://blog.csdn.net/yunhua_lee
试读样章: http://download.csdn.net/download/yah99_wolf/9371665
问答结束后,李运华老师会在所有提问者中抽取五名用户,赠送《面向对象葵花宝典:思想、技巧与实践》一书。
京东
亚马逊
当当购买
获奖名单公布,请私信管理员提供快递地址
dear_Alice_moon
u011225629
henuyx
xmt1139057136
zhangjie617
122 个解决方案
#1
大神,膜拜中
#2
赞!!!!!
#3
运华老师的博客文章,都很有深度,相信这书,肯定是精品,
#4
膜拜大神~~~~
#5
我对设计模式在实际项目中的应用比较感兴趣,希望多讲讲啊
#6
学编程好久了,可没真正入门呀。
膜拜大神新作!
膜拜大神新作!
#7
给力!!!!!!!!!!!!
#8
语言浅显易懂,没有大话空话。
特别是从分析模型到架构、设计模型如何过度,让不能入门的我受益匪浅
特别是从分析模型到架构、设计模型如何过度,让不能入门的我受益匪浅
#9
拜读过你的文章,深入浅出,经常很容易就学会了,你写的书一定也很棒!
#10
拜读过电子版的《面向对象葵花宝典》,会支持实体书的。运华老师的书值得收藏!
#11
膜拜大神~~~~
#12
我曾经也有这样的困惑,概念好像都懂,语法也会,但真正项目中应用就有困难了,所以我花了较多时间去学习、思考、探索、实践,这本书就是我的个人经验总结,相信对你有帮助
#13
java 一切皆对象,然而我还没有对象
#14
设计模式应用的关键不是背住每个模式,而是“找到在哪里应用设计模式”,“应用哪个设计模式”,关键两点就是:发现变化封装变化,优先使用组合而不是继承。
你可以用具体的设计模式去封装,也可以用其它方式去封装。
#15
提升自己能力和水平,找个好工作,不说成为高富帅,找个妹子肯定不是难题 :)
#16
哈哈,有道理, 踏踏实实编码,勤勤恳恳做人,抬头做事,低头做人,还有多认识朋友 ,妹子总会有的
#17
通常在拿到一个需求的时候,第一个反应就是如何实现这个需求,而且很快可能就实现了它,面向过程的思维直接有效,怎样从面向过程的思维跳到面向对象的思维呢?
有时候一个小需求直接实现快速便捷, 面向对象的边界在哪里呢?
有时候一个小需求直接实现快速便捷, 面向对象的边界在哪里呢?
#18
通常在拿到一个需求的时候,第一个反应就是如何实现这个需求,而且很快可能就实现了它,面向过程的思维直接有效,怎样从面向过程的思维跳到面向对象的思维呢?
有时候一个小需求直接实现快速便捷, 面向对象的边界在哪里呢?
如果不是重新开发一个系统,大部分已有的系统都会采用一种设计思想,新的需求最好契合系统已有的设计思想,否则系统的概念完整性和一致性就被打破了,后续维护和开发会混乱。
如果已有的系统已经采用了面向对象的设计思想,但新的需求很简单,只要找个类的某个方法改一改就可以了,就不用关注到底是面向对象还是面向过程,面向对象的对象方法里面其实都是面向过程的做法。
#19
你是我见过最热心的楼主了,之前几期,我认认真真的提了几个问题,作者都不鸟大家
#20
“多态 = 重载(overload) + 重写(override)”
#21
Object是所有类的祖宗。
Class<Object>与Class<?>有何区别呢?
如,使用泛型时,通常用T,但T继承于Object,为什么不直接使用object。两者间有啥却别?
Class<Object>与Class<?>有何区别呢?
如,使用泛型时,通常用T,但T继承于Object,为什么不直接使用object。两者间有啥却别?
#22
多态不能那样理解吧,多态我的理解是生态多样化,即一个类,比如说鸟,可以多态为麻雀,鹦鹉等等,然后麻雀继承鸟后还可以实现接口达到"这麻雀","那麻雀"等多态。我感觉多态在这边比较多点。
#23
膜拜大师,请问这本书适合新手学习吗
#24
“多态 = 重载(overload) + 重写(override)”
严格意义上来说,面向对象的多态 是指 override
#25
膜拜大师,请问这本书适合新手学习吗
非常适合,尤其是面向对象概念的解读和面向对象开发过程,面向对象开发入门的神器 :)
#26
“多态 = 重载(overload) + 重写(override)”
严格意义上来说,面向对象的多态 是指 override
解释一下
#27
“多态 = 重载(overload) + 重写(override)”
严格意义上来说,面向对象的多态 是指 override
解释一下
多态的真正含义是:使用指向父类的指针或者引用,能够调用子类的对象,我的书中提出了“多态 = 多胎”的概念,俗话说:龙生龙、凤生凤、老鼠生来会打洞,强调的是父类和子类之间的继承性、子类与子类之间的差异性
#28
运华大神!膜拜!!!
#29
不错,粗略的浏览了一些博客,的确很多研究的很深入,总结的也很好。对于有些知识点有一种恍然大悟的感觉。
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
#30
读了样章 一个字 “吊”
膜拜加支持。
样章 里 对需求的描述通俗易懂, 关键是有迹可循, 这大概就是深入浅出的讲解了.
期望5年以后我对Java的理解可以到达这个境界。
膜拜加支持。
样章 里 对需求的描述通俗易懂, 关键是有迹可循, 这大概就是深入浅出的讲解了.
期望5年以后我对Java的理解可以到达这个境界。
#31
不错,粗略的浏览了一些博客,的确很多研究的很深入,总结的也很好。对于有些知识点有一种恍然大悟的感觉。
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
对开源云只有粗浅的了解,谈发展方向还是不误人子弟了,看看有没有这方面的大牛能解答你的问题
#32
读了样章 一个字 “吊”
膜拜加支持。
样章 里 对需求的描述通俗易懂, 关键是有迹可循, 这大概就是深入浅出的讲解了.
期望5年以后我对Java的理解可以到达这个境界。
有这样的效果最好了,这也是我的写这本书的目的,期望让更多人不再迷茫,有恍然大悟、醍醐灌顶的感觉最好了,这感觉,只有经历的人才能体会到它的酸爽 :)
#33
华哥终于出书了,期待已久。华哥做过大大小小多种类型的系统,其中包含从零做起的,优化重构的,架构经验丰富。很期待能拜读华哥的葵花宝典,赶紧买一本回来学习学习~~
#34
欲练神功,必先自宫
#35
不错,粗略的浏览了一些博客,的确很多研究的很深入,总结的也很好。对于有些知识点有一种恍然大悟的感觉。
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
对开源云只有粗浅的了解,谈发展方向还是不误人子弟了,看看有没有这方面的大牛能解答你的问题
啊哈哈,我也是最近在看openstack,就联想到这个问题了,共勉~
#36
欲练神功,必先自宫
若不自宫,亦可成功 :)
#37
感觉高大上,棒棒哒
#38
#39
已在亚马逊购买了你的书
#40
#41
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
#42
#43
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
一个系统一开始就会选择面向对象或者面向过程的思想,不存在在开发过程中每个需求都来判断用哪个,真的这样做的话,系统最后会很混乱
#44
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
一个系统一开始就会选择面向对象或者面向过程的思想,不存在在开发过程中每个需求都来判断用哪个,真的这样做的话,系统最后会很混乱
难道我理解错了?
比如微信公众号开发的时候,接收微信传回的信息时,(面向过程)会直接根据类型写很多if else if判断并处理数据,
(面向对象)就会根据类型创建公用父类和多个子类来区分类型,每个子类只处理自己相关的数据?
#45
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
一个系统一开始就会选择面向对象或者面向过程的思想,不存在在开发过程中每个需求都来判断用哪个,真的这样做的话,系统最后会很混乱
难道我理解错了?
比如微信公众号开发的时候,接收微信传回的信息时,(面向过程)会直接根据类型写很多if else if判断并处理数据,
(面向对象)就会根据类型创建公用父类和多个子类来区分类型,每个子类只处理自己相关的数据?
你理解没错,大的业务应该选择面向对象的处理方式,但具体的实现,比如说某个方法里面处理,确实有可能直接if-else,不然的话是,所有if-else都用类来处理,类数量会让人受不了。
举个例子,假如我的系统支持微信登录、微博登录、QQ号登录,不同的登录方式用面向对象封装,同一个登录方式的具体实现流程可以用面向过程的方式实现,例如:错误码1如何处理、错误码2如何处理、错误码3如何处理。。。。。。但也可以用面向对象的方式处理,没有明确的标准,靠你的经验。我的经验是如果没把握,就先用最快的方式实现,毕竟我们还有重构这个利器可以使用,即使开始选择错误,后面也可以优化。
所以我说面向对象的方法里面其实都是面向过程的 :)
#46
#47
更高效更优质的开发。
#48
#49
#50
我们一直是为了产生对象而定义类(class)的。对象是具有功能的实体,而类是对象的类型分类。这是面向对象的一个基本概念。
#1
大神,膜拜中
#2
赞!!!!!
#3
运华老师的博客文章,都很有深度,相信这书,肯定是精品,
#4
膜拜大神~~~~
#5
我对设计模式在实际项目中的应用比较感兴趣,希望多讲讲啊
#6
学编程好久了,可没真正入门呀。
膜拜大神新作!
膜拜大神新作!
#7
给力!!!!!!!!!!!!
#8
语言浅显易懂,没有大话空话。
特别是从分析模型到架构、设计模型如何过度,让不能入门的我受益匪浅
特别是从分析模型到架构、设计模型如何过度,让不能入门的我受益匪浅
#9
拜读过你的文章,深入浅出,经常很容易就学会了,你写的书一定也很棒!
#10
拜读过电子版的《面向对象葵花宝典》,会支持实体书的。运华老师的书值得收藏!
#11
膜拜大神~~~~
#12
学编程好久了,可没真正入门呀。
膜拜大神新作!
我曾经也有这样的困惑,概念好像都懂,语法也会,但真正项目中应用就有困难了,所以我花了较多时间去学习、思考、探索、实践,这本书就是我的个人经验总结,相信对你有帮助
#13
java 一切皆对象,然而我还没有对象
#14
我对设计模式在实际项目中的应用比较感兴趣,希望多讲讲啊
设计模式应用的关键不是背住每个模式,而是“找到在哪里应用设计模式”,“应用哪个设计模式”,关键两点就是:发现变化封装变化,优先使用组合而不是继承。
你可以用具体的设计模式去封装,也可以用其它方式去封装。
#15
java 一切皆对象,然而我还没有对象
提升自己能力和水平,找个好工作,不说成为高富帅,找个妹子肯定不是难题 :)
#16
java 一切皆对象,然而我还没有对象
提升自己能力和水平,找个好工作,不说成为高富帅,找个妹子肯定不是难题 :)
哈哈,有道理, 踏踏实实编码,勤勤恳恳做人,抬头做事,低头做人,还有多认识朋友 ,妹子总会有的
#17
通常在拿到一个需求的时候,第一个反应就是如何实现这个需求,而且很快可能就实现了它,面向过程的思维直接有效,怎样从面向过程的思维跳到面向对象的思维呢?
有时候一个小需求直接实现快速便捷, 面向对象的边界在哪里呢?
有时候一个小需求直接实现快速便捷, 面向对象的边界在哪里呢?
#18
通常在拿到一个需求的时候,第一个反应就是如何实现这个需求,而且很快可能就实现了它,面向过程的思维直接有效,怎样从面向过程的思维跳到面向对象的思维呢?
有时候一个小需求直接实现快速便捷, 面向对象的边界在哪里呢?
如果不是重新开发一个系统,大部分已有的系统都会采用一种设计思想,新的需求最好契合系统已有的设计思想,否则系统的概念完整性和一致性就被打破了,后续维护和开发会混乱。
如果已有的系统已经采用了面向对象的设计思想,但新的需求很简单,只要找个类的某个方法改一改就可以了,就不用关注到底是面向对象还是面向过程,面向对象的对象方法里面其实都是面向过程的做法。
#19
你是我见过最热心的楼主了,之前几期,我认认真真的提了几个问题,作者都不鸟大家
#20
“多态 = 重载(overload) + 重写(override)”
#21
Object是所有类的祖宗。
Class<Object>与Class<?>有何区别呢?
如,使用泛型时,通常用T,但T继承于Object,为什么不直接使用object。两者间有啥却别?
Class<Object>与Class<?>有何区别呢?
如,使用泛型时,通常用T,但T继承于Object,为什么不直接使用object。两者间有啥却别?
#22
多态不能那样理解吧,多态我的理解是生态多样化,即一个类,比如说鸟,可以多态为麻雀,鹦鹉等等,然后麻雀继承鸟后还可以实现接口达到"这麻雀","那麻雀"等多态。我感觉多态在这边比较多点。
#23
膜拜大师,请问这本书适合新手学习吗
#24
“多态 = 重载(overload) + 重写(override)”
严格意义上来说,面向对象的多态 是指 override
#25
膜拜大师,请问这本书适合新手学习吗
非常适合,尤其是面向对象概念的解读和面向对象开发过程,面向对象开发入门的神器 :)
#26
“多态 = 重载(overload) + 重写(override)”
严格意义上来说,面向对象的多态 是指 override
解释一下
#27
“多态 = 重载(overload) + 重写(override)”
严格意义上来说,面向对象的多态 是指 override
解释一下
多态的真正含义是:使用指向父类的指针或者引用,能够调用子类的对象,我的书中提出了“多态 = 多胎”的概念,俗话说:龙生龙、凤生凤、老鼠生来会打洞,强调的是父类和子类之间的继承性、子类与子类之间的差异性
#28
运华大神!膜拜!!!
#29
不错,粗略的浏览了一些博客,的确很多研究的很深入,总结的也很好。对于有些知识点有一种恍然大悟的感觉。
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
#30
读了样章 一个字 “吊”
膜拜加支持。
样章 里 对需求的描述通俗易懂, 关键是有迹可循, 这大概就是深入浅出的讲解了.
期望5年以后我对Java的理解可以到达这个境界。
膜拜加支持。
样章 里 对需求的描述通俗易懂, 关键是有迹可循, 这大概就是深入浅出的讲解了.
期望5年以后我对Java的理解可以到达这个境界。
#31
不错,粗略的浏览了一些博客,的确很多研究的很深入,总结的也很好。对于有些知识点有一种恍然大悟的感觉。
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
对开源云只有粗浅的了解,谈发展方向还是不误人子弟了,看看有没有这方面的大牛能解答你的问题
#32
读了样章 一个字 “吊”
膜拜加支持。
样章 里 对需求的描述通俗易懂, 关键是有迹可循, 这大概就是深入浅出的讲解了.
期望5年以后我对Java的理解可以到达这个境界。
有这样的效果最好了,这也是我的写这本书的目的,期望让更多人不再迷茫,有恍然大悟、醍醐灌顶的感觉最好了,这感觉,只有经历的人才能体会到它的酸爽 :)
#33
华哥终于出书了,期待已久。华哥做过大大小小多种类型的系统,其中包含从零做起的,优化重构的,架构经验丰富。很期待能拜读华哥的葵花宝典,赶紧买一本回来学习学习~~
#34
欲练神功,必先自宫
#35
不错,粗略的浏览了一些博客,的确很多研究的很深入,总结的也很好。对于有些知识点有一种恍然大悟的感觉。
知其然,知其所以然,在这个基础上,灵活运用,发挥最大的优势
面向对象技术 在开源云上面有哪些比较好的发展方向?
对开源云只有粗浅的了解,谈发展方向还是不误人子弟了,看看有没有这方面的大牛能解答你的问题
啊哈哈,我也是最近在看openstack,就联想到这个问题了,共勉~
#36
欲练神功,必先自宫
若不自宫,亦可成功 :)
#37
感觉高大上,棒棒哒
#38
#39
已在亚马逊购买了你的书
#40
#41
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
#42
#43
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
一个系统一开始就会选择面向对象或者面向过程的思想,不存在在开发过程中每个需求都来判断用哪个,真的这样做的话,系统最后会很混乱
#44
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
一个系统一开始就会选择面向对象或者面向过程的思想,不存在在开发过程中每个需求都来判断用哪个,真的这样做的话,系统最后会很混乱
难道我理解错了?
比如微信公众号开发的时候,接收微信传回的信息时,(面向过程)会直接根据类型写很多if else if判断并处理数据,
(面向对象)就会根据类型创建公用父类和多个子类来区分类型,每个子类只处理自己相关的数据?
#45
写了一年多java代码,因为项目需求不同(很少复用),处理数据时经常不自觉的面向过程,
有没有什么方法可以判断程序中什么情况用面向对象更合适
一个系统一开始就会选择面向对象或者面向过程的思想,不存在在开发过程中每个需求都来判断用哪个,真的这样做的话,系统最后会很混乱
难道我理解错了?
比如微信公众号开发的时候,接收微信传回的信息时,(面向过程)会直接根据类型写很多if else if判断并处理数据,
(面向对象)就会根据类型创建公用父类和多个子类来区分类型,每个子类只处理自己相关的数据?
你理解没错,大的业务应该选择面向对象的处理方式,但具体的实现,比如说某个方法里面处理,确实有可能直接if-else,不然的话是,所有if-else都用类来处理,类数量会让人受不了。
举个例子,假如我的系统支持微信登录、微博登录、QQ号登录,不同的登录方式用面向对象封装,同一个登录方式的具体实现流程可以用面向过程的方式实现,例如:错误码1如何处理、错误码2如何处理、错误码3如何处理。。。。。。但也可以用面向对象的方式处理,没有明确的标准,靠你的经验。我的经验是如果没把握,就先用最快的方式实现,毕竟我们还有重构这个利器可以使用,即使开始选择错误,后面也可以优化。
所以我说面向对象的方法里面其实都是面向过程的 :)
#46
#47
更高效更优质的开发。
#48
#49
#50
我们一直是为了产生对象而定义类(class)的。对象是具有功能的实体,而类是对象的类型分类。这是面向对象的一个基本概念。