Java编程思想-第一章 1.1-1.4 读书笔记

来源:互联网 发布:网络lw代表什么意思 编辑:程序博客网 时间:2024/05/16 08:50

做android开发有一段时间了,总感觉自己技术不扎实,没有理论的支持。写出来的代码总是不能让自己满意,因此拿起Java编程思想,想从里面找到答案。


1.开发中遇到最多的问题,就是如何做好一个东西的抽象,解决复杂问题的程度直接取决于抽象的种类和质量。

面向对象思想

1.所有东西都是对象。我们可以把对象作为新型变量;它保存数据,可以要求它对自身进行操作。理论上讲,可以从要解决的问题中提出所有概念性的组件,然后在程序中表达为一个对象。

2.程序是一大堆对象的组合,通过消息传递,各个对象知道自己该做什么。为了向对象发出请求,需要向那个对象发送消息。更加具体的讲,就是把消息当作是调用请求,它调用的是从属于目标对象的子函数或函数。

3.每个对象都有自己的空间,可以容乃其他对象,或者说,通过封装现有对象而做出新的对象。所以对象可以很简单,也可以达到任意复杂的程度

4.每一个对象都有一种类型,根据语法每个对象就是类的实例,

5.同一个类所有对象都可以接受相同的消息。

面向对象自己的理解:我喜欢把程序理解为一个公司或者是一个工厂,员工的协作完成了公司的任务,员工(对象)组成了公司(程序)。每个员工他都有自己的信息和技能。我们把具有相同技能的人起了个名字Android开发工程师(类),我就是Android开发工程的实例。每个人都会自己的办公空间,和自己的工作技能。员工之间会有交互,所谓的调用就是员工A向员工B说了一声你去做啥做啥代码中呢就是调用了员工B的一个方法。比如说Android开发高级工程师A,和Android初级开发工程B他们都是Android开发工程师,他们俩都可以写 Hello world 。

2.对象接口

在设计程序(设计对象的时候),最大的挑战是问题空间和方案空间元素之间建立一一对应的关系。如何利用对象完成真正的工作,必须有一种方法能向对象发出请求,令其做一些实际的事情,比如完成一次交易,打开一个开关。每个对象仅能接受特定的请求。我们向对象发送请求是通过它的接口定义,对象的类规定了它的接口形式。类型与接口的等价或对应的关系是面向对象的基础。

对象接口的理解:接口定义于类,它宣扬了该类的所有实例都可以并值可以接受到接口定义的消息类型。我们设计接口,是为了设计方案,每一个方案解决一个问题。

3.实现方案的隐藏

1.开发中分为类的创建者和类的使用者。对于类的创建者而言,他们的目标是构建一个类,并向客户端开发人员开发必要的接口,把其他细节隐藏。为什么要隐藏细节,这样客户端开发人员就不能随意的更改和接触到细节。确保自己开发内容不会被非法更改,导致对别人有影响。

2.接口,定义了可以向特定对象发送的请求。然而必须有一部分代码要满足这些需求,把这些代码和数据隐藏起来叫做隐藏实现。有两个方面的原因导致不得不隐藏实现,一是防止程序员接触到他们不该接触的东西(内部数据类型的设计思想)。若只是解决特定问题,用户只需要操作接口即可,毋需弄明白这些信息。我们向客户端开发人员提供其实是一种服务,因为他们很容易就看出来那部分对他们有用,哪部份可以忽略不计。第二个原因是库的设计人员更改内部结构,不会担心对客户端造成影响。


方法实现隐藏的自己理解:比如我们是设计灯的开关,我们首先会向使用者开放两个接口,开和关。但是我们是通过什么方式实现开和关的呢,我们不必要详细的介绍我们的开关功能是怎么样的。如果我们开放这部分实现,一方面不安全,举个例子万一他移动了线路这个开关就不安全了,当别人使用这个开关时就可能出问题了。比如数据库到底如何取出来这些数据的,到底是什么原理。我们不需要知道,只要拿到正确的数据就好,如果我们瞎改里面取数据的方法就可能会导致下次在别的地方取数据失败。还有一方面就是实现的升级,我们隐藏代码实现后可以轻松的进行升级,不用担心影响客户端,为什么因为客户端只是知道 灯的接口 开和关。


4.方案的重复使用

1.创建一个类,它的理想情况是它代表了一个有用的代码单元。但是想设计一个能重复使用的实现是不容易的。它需要经验和洞察力。体现复用的地方:我们创建类的对象就是最好的复用,同时我们可以把类的对象置于一个新的类中作为其构成(我们把这个称为创建成员对象)。我们把通过使用现有类创建新类的方式叫“组织”。有时我们也将组织称作包含关系。比如说,汽车包含轮胎。 对象的组织具有极大的灵活性。新类的 成员对象通常设置为 private 使用这个类的客户端成员不能访问它,这样我们可以随意的修改这些成员对象,而不会干扰客户端开发人员,也可以运行时期修改成员,进一步扩大灵活性。我们设计尽量采用清爽的方式,继承的设计如果设计不好通常会变得笨拙,增大程序的复杂程度。

5.继承:重新使用接口

1.对象另外一种理解,它把数据和功能封装到一起。这样可以方便的表达问题空间的概念,不用刻意遵循基础机器的表达形式。如果没有继承的概念,为了实现功能大致相同而去创建一个新类去实现是令人很沮丧的。有了继承可以解决这个问题,我们创建一个新类继承基类,这个新类不仅包含现有类型的成员还有基类的所有成员(除了private的),它复制了基类的接口,意思是说,可以向新类发送和基类相同的消息。


0 0
原创粉丝点击