摘要: 访问者模式的目的: 封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 问题的提出:System.Collection命名空间下提供了大量集合操作对象。平时我们大多在集合中都是存储的同类型对象,像2.0中的泛型中就规定集合中只能存储指定的对象类型,要么是整形要么是字符型等,否则会报错。如果针对一个保存有不同类型对象的聚集采取某种操作该怎么办呢? 示例:假设有一个员工报销的集合,里面存储了员工姓名和报销金额情况,而报销数据类型并不统一,有的是整形的,有的是双精度的,有的是字符串型,我们要做的就是根据具体的数据类型给出不同的显示格式,例如在整 阅读全文
posted @ 2011-12-02 16:35 Flying Dreams 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 敏捷开发提倡简单设计的实践,“并在实现新需求时抓住机会改进设计”以对同类性质的改动封闭,做到由需求的变化驱动设计的进化(我们不能因为设计的退化而责怪需求的变化),同时经验在此起到十分重要的作用,如有经验的设计人员可以凭经验在初始设计时做出必要的抽象来满足ocp原则等,或是在需求变动时确定系统所需的抽象(所需的封闭),当然应及早的刺激这种变化的出现(如测试驱动的开发方法)。 OOD承诺了一系列的好处(灵活性可重用性可维护性),用OO语言设计开发,若要方便的得到这些所谓的好处,有一系列的原则是要遵循的,如SRP,OCP,LSP,ISP等。 SRP(单一职责原则)维护类的简单性,类不应承担一个... 阅读全文
posted @ 2011-12-02 11:26 Flying Dreams 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 已经笔试很多次了,除了一些知识外,还有一些编程题是很多公司都经常会考到的,这里做个总结,为以后的笔试做个准备。说经典,还得说是微软的笔试面试题,虽然在网络上已经传了很久,但还会出现在各大公司的笔试题目当中。一些经典的题目如下:1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?4.一个岔路 阅读全文
posted @ 2011-12-01 17:54 Flying Dreams 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 接到公司人资部的通知,要准备一个多小时的培训课程。人资部要求最好是游戏和互动,想来想去对于那一双双求知若渴的眼睛,或许给大家讲一下一个老员工的经历和感受会更加贴合需求。 心态是一定要涉及的,心态的好坏对于员工后期的表现影响巨大。很多新员工在最初听到领导和老员工不厌其烦的提到心态时,往往会有抵触心理,且不知有些 人一直得不到职业生涯发展的机会跟心态有很大的关系。另外就是工作后的一些基本的方法和技能,最后我想要根据我自己的工作经验,谈一下新入职员工需要远离 的一些坏习惯。 从学生到职员,看似是一个简单的过程,其实却是一个非常大的跨越,影响到的将是生活的方方面面。很多人短时间无法快速适应角色的转.. 阅读全文
posted @ 2011-12-01 17:53 Flying Dreams 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 问题描述:往往人们购买车子不是去生产工厂里面去买,而是去汽车的代理商那儿去购买,这个代理商的作用跟代理模式中描述的作用是一样的。类的设计思路如下:1、接口ICarSeller:是类CarProxy与类CarProducer的抽象,提供方法sellCars(int cars)2.类CarProxy:汽车代理商,当自己的库存足够的时候,自己直接与消费者交易;当自己的库存不足的时候,首先需要向汽车生产商购买足够的汽车,然后再将汽车卖给消费者,提供了sellCars与buyCars两个方法。实例变量numberOfCars记录代理商的库存量,并且拥有对汽车生产商的引用。3.类CarProducer:汽 阅读全文
posted @ 2011-12-01 16:55 Flying Dreams 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 设计模式总结性试题1、设计模式一般用来解决什么样的问题( a) A.同一问题的不同表相 B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是2、下列属于面向对象基本原则的是( c ) A.继承 B.封装 C.里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。 A.创建型 B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编 阅读全文
posted @ 2011-12-01 15:20 Flying Dreams 阅读(1881) 评论(0) 推荐(0) 编辑
摘要: 在网页http://topic.csdn.net/u/20090916/00/8204215a-73c8-4939-9ccf-258ded13e33f.html上看到一道面试题,如下:利用Java中的接口来实现设计模式中的策略模式,需要编写程序如下: public interface Relation{ boolean Releation(int a,int b); } 利用上述接口,编写一个函数 IntGetMaxChainLen(int[] intArray,Relation relation); intArray为一个整形数组,该数组中,假如相令俩整数a,b。... 阅读全文
posted @ 2011-12-01 11:38 Flying Dreams 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 以汽车为例子,对汽车进行染色是必须的步骤,但是如果有些车主还喜欢对车把手或者车内部进行不同的染色(这当然是选择性的步骤),那么就非常适合用装饰者设计模式来设计。设计的代码如下package car.paint;public interface Car {public void paint(String color);}package car.paint;public class ConcreteCar implements Car {private String color ;public void paint(String color) {// TODO Auto-generated met 阅读全文
posted @ 2011-12-01 11:00 Flying Dreams 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 一、 引言 迭代这个名词对于熟悉Java的人来说绝对不陌生。我们常常使用JDK提供的迭代接口进行java collection的遍历:Iteratorit=list.iterator();while(it.hasNext()){ //using“it.next();”dosomebusinessslogic}而这就是关于迭代器模式应用很好的例子。 二、 定义与结构 迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。 从定义可见,迭代器模式是为容器而生。很明显,... 阅读全文
posted @ 2011-11-30 10:43 Flying Dreams 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 命令模式也是开发中常见的一个模式,也不是太难,比较简单,下面来详细的写一下命令模式。命令模式(Command)1 场景问题1.1 如何开机 估计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是按下启动按钮就可以了吗?难道还有什么玄机不成。 对于使用电脑的客户——就是我们来说,开机确实很简单,按下启动按钮,然后耐心等待就可以了。但是当我们按下启动按钮过后呢?谁来处理?如何处理?都经历了怎样的过程,才让电脑真正的启动起来,供我们使用。 先一起来简单的认识一下电脑的启动过程,了解一下即可。当我们按下启动按钮,电源开始向主板和其它设备供电主板的系统BIOS(基本输入输出系统)开始加电后自 阅读全文
posted @ 2011-11-29 16:42 Flying Dreams 阅读(119) 评论(0) 推荐(0) 编辑