`
kmakxa
  • 浏览: 14954 次
社区版块
存档分类
最新评论
文章列表
创建和销毁对象: 1.静态工厂方法:提供一个静态方法用于返回对应的实例。感觉就像简单的工厂。工厂可以持有一个集合,根据请求返回对应的对象。这种方法的缺点是:被创建的对象要提供可以让外部访问的构造函数(感觉不是非常大的缺点啊,出了单例不然提供构造函数不是挺正常的吗?),还有方法看起来和其他静态方法一样,不好识别是构造函数(写一个好的函数名可以解决吧)。 2.构建器Bulider:当类有很多属性,在构建的时候就会遇到麻烦,我们会需要根据不同的情况给某些属性初始值,这样就会造成构造函数必须有很多个进行重载,会形成很复杂不容易理解的情况。一种简单的方法是想javabean一样,提供一个无参的构造函数 ...
重构是必要的,必要性体现在代码的可维护性上。在开发过程中,代码要能被他人容易的阅读。 从此基础上来看,可以发现一切重构的动作是很自然的。 首先,应该找到过于长,逻辑比较复杂的代码,通过观察,找出可以分离的部分,将这部分功能抽出由方法来做。 这时候,我们会自然考虑到两个问题,参数的设置和返回值的选择,参数应该是这段代码中用到,却不必修改的值 而返回值一般是代码中临时变量所需要的值。如此,可将方法编写出来。 在方法编写完成后,就要思考该方法所处的位置,将其置于哪个类中,一般方法与其所需要操作的数据在同一类中。 如果该方法并未使用这个类中的数据,就可以考虑将其抽出。 完成以上步骤 ...
花了几天时间终于把《数学之美》这本书看完了。之前看了浪潮之巅,觉得还比较有意思,于是这次买了这本书过来看。不过很明显的感觉看起来比较吃力。不禁感觉自己大学荒废了好多,在概率论和线性代数方面完全没有学进去。数学知识很不扎实的我,在书中的很多部分都没办法读懂。 因此,读完了以后,给我的收获并没有想象中的大,只是对搜索方面的基础有了一定的了解而已。不过这方面的了解对我来说也是不错的,在信息传递上有了新的体会。希望等自己的等级提升了之后重看这本书能有新的体会。
第六章作者谈到了财富的问题,我最大的感受是财富不等于金钱,我们创造的价值就是财富,比如我自己设计出了软件,虽然没有给我带来收入,但是我一样创造了财富。不过有一点,创造的东西有价值就是说必须有人需要它 ...
看了第二章黑客与画家。第一次这么明白作为一名软件工作者的定位。看了其中的分类,确实有那么些道理,现在在计算机方面的工作中,有数学家,计算机科学家和软件工作者。我以前就觉得在研究数学的人面前挺自卑的,认 ...
在看完第一章为什么书呆子不受欢迎。我个人觉得作者说话的还是比较偏激的,站在了自己的角度来说,不够有客观性。不过也许国家的环境不一样吧。起码在我的中学时期,并没有发现书呆子比较受欺负,相反由于比较重视学习的大环境来说,家长们普遍都重视成绩,因此,成绩好的人也会成为瞩目的焦点,而且也比较容易参加学校的活动。造成这样的差别主要是由于咱们应试教育的特点,不像美国一样完全让孩子的特点自由的发展,如果按Paul的思想,似乎中国的教育方式更为好了?其实这是很片面的想法,站在书呆子的角度来说,确实那样的环境会让人受到挫折,而且在进入了成人环境中确实可以聚集同样特性的人形成一个新的环境,这样的环境中学习能力,技术 ...
复合模式其实就是混合使用了几种模式来解决一般性问题。这种解决方法一定成熟经过验证的。 其中大名鼎鼎的MVC模式就是一种复合模式,MVC是面试中经常问到的了,就算不是很了解的人也能说出一二来,虽然当时我对设计模 ...
代理模式:为另一个对象提供一个替身或占位符以控制这个对象的访问。 代理模式也是我们平常见到的。同样一个类,不同的人对这个类拥有不同的权限怎么控制?我们可以为这个类创建代理,客户通过代理来访问类,这样,我们就可以控制客户对类的访问。代理模式还有许多的用法,说到底就是为类提供了一个代表,客户通过代表来访问。 RealSubject实现了真正的业务逻辑,Proxy和RealSubject都实现Subject接口,客户通过subject接口来完成想要的功能。而客户依赖的是Proxy类,Proxy类依赖RealSubject,通过RealSubject来完成相应的请求。 java中RMI就是一个 ...
状态模式:允许对象在内容状态改变时改变它的行为,对象看起来好像修改了它的类。 状态模式还是比较有意思的,将类在不同状态下的行为封装成一个类,在不同状态下调用对应状态类的方法,这样看起来似乎类在不断的变化,而且当要修改状态的行为时,也不用去修改原来的容器类。 Context中可以有多个state,图中为了简便就没有画出来了,currentState是当前状态的引用,指向某个state属性,当客户调用request方法的时候呢,context执行currentState的handle方法,通过转换currentState指向不同的stateA,B,就可以执行不同的handle,看起来Cont ...
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以再不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法的作用是,我们可以规定一个方法执行一系列的步骤,比如打开机器,设定条件,执行机器。打开机器和执行机器的过程是一样的,但是设定条件的过程可能不一样,这样我们可以讲设定条件的实现留给子类来做。这样我们规定了模板,部分实现由子类来做。 templateMethod就是模板方法,定义了算法骨架,比如依次执行了primitiveOperation1,2,3。但是2可以有多重方法来实现,于是基类将实现留到了子类,将2标记为abstract。子类实现 ...
组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 在我看来,组合模式是用来屏蔽节点与叶子的区别的,在实际使用中我还真没想出有用过这种做法。不过看书上的菜单的介绍确实还是挺符合这种情况的。我们在使用菜单的时候,菜单下面同时有菜单项和子菜单,子菜单下面又有菜单项,点击菜单项会展示对应功能,点击子菜单会显示子菜单下面的节点。组合模式可以屏蔽菜单项和子菜单的差别。 Leaf实现了相应的operation操作,Composite作为菜单,里面包含了菜单项和子菜单,即Leaf和子Composite。对于用户Client来说,不需 ...
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 使用java的应该对迭代器非常熟了,让集合返回iterator对象就可以很方便的遍历一个集合。初学java的时候我也对这个没什么概念,觉得很奇怪,用循环不就可以遍历集合了吗,而且也可以很方便的进行操作,为什么要有迭代器这个东西,过了很久我也没特别的感受。迭代器的作用是封装了遍历,比如linklist和arraylist两者遍历的方法就不一样,arraylist可以用下标,而linklist就不行了,通过迭代器可以遍历集合和忽略集合内部的表示。 所有的集合都实现Aggregate接口,该接口提供了一个cre ...
1.将本职工作做好 2.多与人交流,把握机会。其实这点我做得非常不好,由于性格关系,不太喜欢和人交往 3.对自己的人生有规划。 4.多尝试不同的事情。 5.我能为用户做什么
外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层几口,让子系统更容易使用。 外观模式也很容易理解,子系统有很多接口,我们完成一个功能的时候可能要调用子系统的很多接口才能实现。这样客户理解起来就会非常困难,那我们就抽象出一个接口来完成这些复杂的流程。就像飞船起飞,要许多复杂的子系统来配合,我们提供给客户一个启动按钮,只要使用启动按钮,就可以让飞船起飞了。 如图,Class4~7组成了一个复杂的子系统,每个是一个部件实现了某个功能。Facade提供了request方法来实现这一系列复杂的过程,客户只要使用request方法就可以了。 外观模式和适配器模 ...
适配器模式:将一个类的接口,转换成客户期望的另一个接口。 适配器模式的话还比较容易理解,生活中经常能看到类似的做法。我们的手机充电器是最常见的,手机通过数据线可以连在电脑上充电,但是如果需要连接插座上充电的时候我们就需要一个转换头,将USB口转换成插座口,这个零件就是我们所说的适配器了。 理解起来比较容易画个图就很清楚了。 Adapter通过持有的adaptee对象来执行客户所需要的请求。当然,也可以有许多对象。总之,适配器是将一个类的接口包装成客户所适合的。在系统升级以及兼容的时候比较有用。
Global site tag (gtag.js) - Google Analytics