`
fhlfwl
  • 浏览: 2798 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

对面向对象和设计模式的一点理解

阅读更多

       进入大学开始学习的语言是C语言,一种全面向过程的语言,于是面向过程的思想最先进入了脑子。这种面向过程的编程方式在脑子中定型。以为程序就是函数的组合。什么是面向对象编程根本就没听说过。

  

      后来在大三的时候学习C++,突然看到了类,接口这些概念,知道了面向对象。在学习C++的过程中,面向过程编程思想还在脑子你不断的显现,一种很不习惯的感觉。学习起来也有点吃力。什么虚拟方法,虚拟继承弄的头晕晕的。现在都没什么印象了,因为后来一直用java(java真正的面向对象,没有C++这样虚拟方法什么的怪东西)。

    

    后来大四就开始学习JAVA了,有了C++的基础学习java感觉是很自然和轻松的。于是有了对面向对象的一些理解了。

 

    毕业一年多了,自己有点理解记录一下,加深理解,以后有了深入的理解再回来看看现在的认识可能会有进步的感觉。。:-)。

 

 

    面向对象语言的三个特点:多态,封装,继承 。 写好OO程序必须认识,运用好这三个特点。

  

    好的软件的标准是:易于维护(bug少,代码清晰,修改方便),易于复用(模块之间要低耦合)等。。。

  

    前辈们在开发软件的过程中在经验中总结出开发好软件的方法——设计模式(我这里是指面向对象编程的设计模式,其实面向过程也有设计模式)。

 

   设计模式的核心思想他的思想原则是:1.对接口编程(利用面向对象语言的多态),2.封装变化(少用继承多用组合)

   

     四人帮总结的23个模式,都是这两个原则。比如策略模式,就是一个典型的封装行为的方式。装饰者模式,利用共同实现同一接口,包装者对被包装者引用包装替换更体现了这两个原则。

   

      通过对这两个原则的认识,我以为面向对象的编程和面向过程的编程还是在编程思想和目标是有本质的相同——封装变化,面向对象只是有了更加好的封装方式,可以利用接口来实现多态性,利用类来封装变化。而面向过程就是利用函数了。

 

      现在我发现,如果你完全记住了四人帮的23个模式,你在需要它的时候有时候还是能解决问题,前提是你要能发现你现在的设计可以用四人帮的模式来很好解决。即使你都能发现,但是绝大部分都还是不能直接套用这23个模式.只要理解OO编程,理解这两个原则的威力.那么可以without design pattern

 

 

   

分享到:
评论

相关推荐

    从模式讲到设计模式再到面向对象设计模式

    3、面向对象设计模式是对在特定场景下,解决一般设计问题中类与相互通信对象的描述。 目前最有影响力的书籍是:《设计模式:可复用面向对象软件的基础》,它共编录了23种设计模式,分三大类别:创建型模式、结构型...

    二十三种设计模式【PDF版】

    同样地,面向对象设计员也沿袭一些模式,像“用对象表示状态”和“修饰对象以便 于你能容易地添加/删除属性”等。一旦懂得了模式,许多设计决策自然而然就产生了。 我们都知道设计经验的重要价值。你曾经多少次有过...

    04丨理论一:当谈论面向对象的时候,我们到底在谈论什么?1

    不过没关系,我们在后面的第 7 节课中,会详细讲解这个问题。除此之外,从定义中,我们还可以发现,理解面向对象编程及面向对象编程语言两个概念,其中最关键的一点就是

    asp.net知识库

    我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集...

    本科毕业设计开题报告(飞翔的小鸟游戏的设计与实现V3)

    用java语言来设计一个游戏,不同于现在的大型网络游戏和手机游戏,也不同于其他的小型的单机控制程序,它对游戏编写者对java语言特点认知、语法运用、工作模式、面向对象的理解的把握都提出了更高的要求,特别是在...

    Python设计模式之门面模式简单示例

    门面模式是一个软件工程设计模式,主要用于面向对象编程。 一个门面可以看作是为大段代码提供简单接口的对象,就像类库。 门面模式被归入建筑设计模式。门面模式隐藏系统内部的细节和复杂度,给用户提供一个简单的...

    超级玛丽java源码-Design-Patterns-For-Beginners:初学者设计模式

    能够理解面向对象代码的简单位会有所帮助,但不是必需的。 让我们找点乐子 我们还在等什么? 让我们从设计模式中获得一些乐趣。 我在创建这门课程时很开心,希望你也能。 感谢您对我们的课程感兴趣 我希望你和我一样...

    UML基础、案例与应用(第三版)].施穆勒.扫描版_2分.pdf

    第2章 理解面向对象 20 2.1 无处不在的对象 20 2.2 一些面向对象的概念 22 2.2.1 抽象 22 2.2.2 继承 23 2.2.3 多态性 24 2.2.4 封装 24 2.2.5 消息传递 25 2.2.6 关联 26 2.2.7 聚集 27 2.3 意义 28 2.4 小结 29 ...

    C# 事件的设计与使用深入理解

    说明:事件是.NET类型成员中相对较为难以理解和实践的一个成员,因为事件的定义不是继承自基础的数据类型,而是对委托(delegate)的封装。所以,在了解事件之前,你需要先了解一点委托。 应用场景:事件的应用场景非常...

    对于C++网络编程的一点了解

    对于面向对象的网络编程没有一个基本的认识,而ACE就是一个基于C++的用来开发网络程序的中间件,将OS的IPC机制以及并发机制封装到类库,从而更高效,灵活地编写并发式网络程序,同时对ACE的了解也有助于初学者增强对...

    Java语言的科学与艺术(国外计算机科学经典教材)

    编辑推荐 ... 13.4 面向对象设计的原则  13.5 小结  13.6 复习题  13.7 编程练习 第14章 展望  14.1 递归  14.2 并发  14.3 使用网络  14.4 编程模式  14.5 小结  14.6 复习题  14.7 编程练习

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    定义一个类,实际上就是指定该类所包含的数据和对数据进行操作的代码。 类通过关键字 class 来定义,一般格式为: 【类说明修饰符】class 类名【extends 子句】【implements 子句】 type instance-varable1; type ...

    基于JAVA超级玛丽游戏GUL 设计软件源码+WORD毕业论文文档.zip

    Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。 4. 分布式 Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的...

Global site tag (gtag.js) - Google Analytics