现在的位置: 首页 > 综合 > 正文

和一个好友的聊天记录

2012年08月19日 ⁄ 综合 ⁄ 共 2066字 ⁄ 字号 评论关闭

你现在的问题不仅仅是接口的问题

好想你并没有系统学习过面向对象设计

这是一种思维方式,不是一天两天能掌握的

绝不是我今天跟你说几句,或者写几个代码,你能掌握的

就好比游泳,开车,多学,多思考,多练习。还会走弯路,碰壁。

学校就是培养基础能力,
职业教育才是培养实践能力,
现在的学校一样没抓好

面向对象的字面意思是:目标导向

也就是说设计要:基于需求,应地制宜

基于需求就是:客户关心的是业务功能的实现,而不是你所见到的程序员动辄就这个属性那个字段

很多教材,很多老师都把OOPL和OOAD混为一谈

OOAD(Object Orient Analysis & Design,面向对象的分析和设计,面向对象分析与设计)是现代软件企业广为采用的一项有效技术。

OOPL(object-oriented programming language)面向对象程序设计语言,采用对象、类及其相关概念所进行程序设计。

S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写。
SRP     The Single Responsibility Principle
    单一责任原则
OCP     The Open Closed Principle
    开放封闭原则
LSP     The Liskov Substitution Principle     里氏替换原则
DIP     The Dependency Inversion Principle     依赖倒置原则
ISP     The Interface Segregation Principle     接口分离原则

其实,你放下"面向对象"这个名词,好的设计思路在你的周围到处都有。

面向接口,UM,MVC,这些到处都是

我举个例子:
可口可乐生产饮料
如果他自己开专卖店去卖饮料,这是不可能的
他通过各级批发,各个商店,这些中间环节来代理销售
就这个过程,就体现了所有面向对象的重要原则
你作为消费者,不需要知道可乐在哪里生产,谁生产
你只要到门口小店就可以买到
零售点,批发商,分担了不同的职责
那你想想看,这和接口是不是相似呢
你知道,到零售店可以买到可乐,
"零售店"其实是个接口,并不特指某个小店
而你最终去买的时候,是通过一个具体的小店来实现的
对于厂家,零售端接口的职责就是"把可乐送到小区门口",
而对于消费者,接口的职责就是"销售可乐"
你使用这个"销售可乐"就是购买

我跟你说的是面向对象设计,而不是面向对象编程

人类所有的活动其实遵循相同的大道理,
只不过,在软件设计上,目前叫做"面向对象"
我再回复的时候尽量从OOAD的角度解释,
而你提问的时候,紧抓编程语言不放
我说到,即便C++没有C#的接口,也不妨碍使用C++实现OOAD
学习的方法是,先掌握OOAD,OOPL就不攻自破
就好比,如果你使用C#的话,GoF的设计模式基本上是没有用的了
骨子里没有OOAD的血液,GoF的东西根本就没用
OOAD深入你的灵魂以后,GoF的东西对你是个可有可无的东西,最多是给你这样的感觉:哦,原来....就是所谓的....模式啊
你试想一下,是掌握SOLID容易,还是22种模式容易呢?
又或者,是掌握MVC容易,还是SOLID容易呢?
其实,如果你能理解相对论,那OOAD基本上就通了

建议————————————————————————————————————————————————
你这样,先试试看能不能理解SOLID原则,然后再说(建议),我给你的建议就是:先理解SOLID原则。
如果SOLID原则能够应用,在理解MVC设计模式
之后OOAD就算是成功了
到时候,你会跳出语言的层面看问题,所有的PL在你看来都是浮云
我说了,先有OOAD,后有OOPL
最好的老师就是自己
没有人是你的老师
所有人都是你的老师
所以,实际上老师从来不休息
——————————————————————————————————————————————————

说实在话,当下没什么靠谱的OOAD的书籍
10年前到处都是,现在都绝种了
只言片语就道出了OOAD的核心思想,这本教材给一个好的老师带,掌握OO没什么难度
《C++语言及其程序设计教程》,张国峰  ,电子工业出版社
等你有了一定的理解,在发帖,
以合适的引导方式,引导别人用自己的理解讨论,
这才有意义

你引用的“使用接口发送通知事件”,在MVC设计模式中大量使用

就是你自己咯
最好的老师就是自己
没有人是你的老师
所有人都是你的老师
所以,实际上老师从来不休息

 

朋友,如果您有什么真知灼见,可以加“新浪微博”/MSN哦,starrycheng@live.com,我们大家一起讨论,一起研究。

这是和一个朋友的聊天记录中的内容,自己虽然在大学四年里做了不少项目,但是没有系统的学习“OOAD”的设计思想,造成在设计系统架构的时候总是抽象的不够合理。所以要培养“OOAD”思维方式,如果您也有兴趣的话可以一起探讨。

当然如果您能给点学习建议就更好了,想结合C++  GOF和C# MVC进行学习,先谢谢您。

希望对您有帮助。最后,帮忙加一分吧,想整个空间。

抱歉!评论已关闭.