㈠ java递归算法
1.汉诺塔问题
import javax.swing.JOptionPane;
class Hanoi {
private static final String DISK_B = "diskB";
private static final String DISK_C = "diskC";
private static final String DISK_A = "diskA";
static String from=DISK_A;
static String to=DISK_C;
static String mid=DISK_B;
public static void main(String[] args) {
String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");
int num=Integer.parseInt(input);
move(num,from,mid,to);
}
private static void move(int num, String from2, String mid2, String to2) {
if(num==1){
System.out.println("move disk 1 from "+from2+" to "+to2);
}
else {
move(num-1,from2,to2,mid2);
System.out.println("move disk "+num+" from "+from2+" to "+to2);
move(num-1,mid2,from2,to2);
}
}
}
2. 这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc" 则程序会输出:
abc
acb
bac
bca
cab
cba
(1)算法的出口在于:low=high也就是现在给出的排列元素只有一个时。
(2)算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素,
然后low+1开始减少排列元素,如此下去,直到low=high
public static void permute(String str) {
char[] strArray = str.toCharArray();
permute(strArray, 0, strArray.length - 1);
}
public static void permute(char[] list, int low, int high) {
int i;
if (low == high) {
String cout = "";
for (i = 0; i <= high; i++)
cout += list[i];
System.out.println(cout);
} else {
for (i = low; i <= high; i++) {
char temp = list[low];
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);
temp = list[low];
list[low] = list[i];
list[i] = temp;
}
}
}
3。这是一个组合的例子,与上述的例子相似,只是它所做的工作是,输出所给字符串中制定数目的元素的组合种类
(1)程序出口在于n=1,此时只要输出目标数组的所有元素即可
(2)逼近过程,当n>1的时候,我们先取第一个元素放入目标数组中,然后n-1,如此下去,最后出来。
import javax.swing.JOptionPane;
public class Combination {
/**
* @param args
*/
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("please input your String: ");
String numString = JOptionPane.showInputDialog("please input the number of your Combination: ");
int num = Integer.parseInt(numString);
Combine(input, num);
}
private static void Combine(String input, int num) {
char[] a = input.toCharArray();
String b = "";
Combine(a, num, b, 0, a.length);
}
private static void Combine(char[] a, int num, String b, int low, int high) {
if (num == 0) {
System.out.println(b);
} else {
for (int i = low; i < a.length; i++) {
b += a[i];
Combine(a, num - 1, b, i+1, a.length);
b=b.substring(0, b.length()-1);
}
}
}
}
㈡ 谁能介绍一下JAVA平台开发中最长用的几种设计模式~最好是通俗一些的并且有实例的~500分酬谢
例子很另类,不过还比较好懂
工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个模式用的比较多一些。
其他的模式我找了一下,都列出来了。
======================
Java常用的设计模式
创建型模式
1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖)
建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)
原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。
5、SINGLETON—俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)
单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。
结构型模式
6、ADAPTER—在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我)
适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。
7、BRIDGE—早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了
桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
8、COMPOSITE—Mary今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去商店,你自己挑。”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买。”“喂,买了三件了呀,我只答应送一件礼物的哦。”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻烦你包起来。”“……”,MM都会用Composite模式了,你会了没有?
合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。
9、DECORATOR—Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗?
装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。
10、FACADE—我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。
门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。
11、FLYWEIGHT—每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了,再不用一个字一个字敲了。共享的句子就是Flyweight,MM的名字就是提取出来的外部特征,根据上下文情况使用。
享元模式:FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象,而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。
12、PROXY—跟MM在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自动的回答,接收到其他的话时再通知我回答,怎么样,酷吧。
代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。
行为模式
13、CHAIN OF RESPONSIBLEITY—晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑!
责任链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接
起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。
14、COMMAND—俺有一个MM家里管得特别严,没法见面,只好借助于她弟弟在我们俩之间传送信息,她对我有什么指示,就写一张纸条让她弟弟带给我。这不,她弟弟又传送过来一个COMMAND,为了感谢他,我请他吃了碗杂酱面,哪知道他说:“我同时给我姐姐三个男朋友送COMMAND,就数你最小气,才请我吃面。”,:-(
命令模式:命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。
15、INTERPRETER—俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、去看电影的方法等等,跟MM约会时,只要做一个Interpreter,照着上面的脚本执行就可以了。
解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构,也就是一系列的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。
16、ITERATOR—我爱上了Mary,不顾一切的向她求婚。
Mary:“想要我跟你结婚,得答应我的条件”
我:“什么条件我都答应,你说吧”
Mary:“我看上了那个一克拉的钻石”
我:“我买,我买,还有吗?”
Mary:“我看上了湖边的那栋别墅”
我:“我买,我买,还有吗?”
Mary:“你的小弟弟必须要有50cm长”
我脑袋嗡的一声,坐在椅子上,一咬牙:“我剪,我剪,还有吗?”
……
迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。
17、MEDIATOR—四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。
调停者模式:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。
18、MEMENTO—同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,这样可以随时察看以前的记录啦。
备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。
19、OBSERVER—想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦
观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
20、STATE—跟MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的MM就会说“有事情啦”,对你不讨厌但还没喜欢上的MM就会说“好啊,不过可以带上我同事么?”,已经喜欢上你的MM就会说“几点钟?看完电影再去泡吧怎么样?”,当然你看电影过程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦。
状态模式:状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。
21、STRATEGY—跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,单目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。
策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。
22、TEMPLATE METHOD——看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template method),但每个步骤针对不同的情况,都有不一样的做法,这就要看你随机应变啦(具体实现);
模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。
23、VISITOR—情人节到了,要给每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个人的特点,每张卡片也要根据个人的特点来挑,我一个人哪搞得清楚,还是找花店老板和礼品店老板做一下Visitor,让花店老板根据MM的特点选一束花,让礼品店老板也根据每个人特点选一张卡,这样就轻松多了;
访问者模式:访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易,就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个的节点类中。当使用访问者模式时,要将尽可能多的对象浏览逻辑放在访问者类中,而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。
㈢ java小程序入门
先到官网下载myeclipse或者eclipse编程软件,并配置java环境变量,在网络搜索栏依次搜索eclipse下载和搜索java环境变量的配置,就可以找到图文并茂的详细教程。下面介绍一下怎么制作小程序:
1、打开myeclispe(eclipse都一样),依次点击File->New->Java Project,然后给这个项目起一个名字(随便起),这里就叫MyFirst.然后点击Finish;
(3)java经典程序100例扩展阅读:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
参考资料:Java-网络
㈣ 成为电脑高手要读哪些书
1000本专业书籍,涉及电子、通信、网络、计算机所有领域。
http://www.kaisense.com/viewthread.php?tid=97&extra=page%3D1
F:\学习考研\电子图书\电子宝库
├—215例题解析自动控制原理_0
├—21世纪信息与通信技术教程 多媒体通信_0
├—21世纪信息与通信技术教程 数字电路与FPGA_0
├—21世纪信息与通信技术教程 数字语音:语音编码实用教程_0
├—21世纪信息与通信技术教程 现代通信基础与技术_0
├—21世纪大学计算机应用系列教材 JAVA与面向对象程序设计导论_0
├—21世纪大学计算机系列教材 C语言大学实用教程_0
├—21世纪网络平台大学计算机系列教材 离散数学_0
├—21世纪网络平台大学计算机系列教材 网络平台大学计算机信息技术_0
├—21世纪高等学校应用型规划教材 EDA实用技术教程_0
├—21世纪高等学校应用型规划教材 Protel 99SE实用技术教程_0
├—21世纪高等学校应用型规划教材 电子交易与支付_0
├—21世纪高等学校应用型规划教材 网络及电子商务安全_0
├—21世纪高等学校教材 概率论与数理统计 (第二版)_0
├—21世纪高等学校教材 线性代数 (第二版)_0
├—21世纪高等学校电子信息类专业规划教材 Visual Basic程序设计基础教程_0
├—21世纪高等学校电子信息类专业规划教材 Visual Basic程序设计教程_0
├—21世纪高等学校电子信息类专业规划教材 多媒体课件制作实训教程_0
├—21世纪高等学校电子信息类专业规划教材 网络安全技术基础_0
├—21世纪高等学校电子信息类专业规划教材 网络安全概论_0
├—21世纪高等学校电子信息类专业规划教材 网络系统集成技术_0
├—21世纪高等学校电子信息类专业规划教材 计算机信息管理基础_0
├—21世纪高等学校电子信息类专业规划教材 计算机硬件技术基础_0
├—21世纪高等学校电子信息类教材 数字微波通信系统_0
├—21世纪高等学校规划教材 高等数学_0
├—21世纪高等学校计算机基础教育系列教材 数据库应用与程序设计实验指导_0
├—21世纪高等学校计算机基础教育系列教材 数据库应用与程序设计教程_0
├—21世纪高等学校计算机科学与技术教材 面向对象C++程序设计_0
├—21世纪高等院校教材 电磁场与电磁波_0
├—21世纪高等院校教材 遥感数字图像处理_0
├—21世纪高等院校数字艺术设计系列教材 数字动画设计艺术_0
├—21世纪高等院校电气信息类系列教材 单片机原理与应用_0
├—21世纪高等院校规划教材 DSP原理及应用_0
├—21世纪高等院校规划教材 数据通信与计算机网络_0
├—21世纪高等院校计算机教材系列 C语言程序设计教程_0
├—21世纪高等院校计算机科学与工程系列教材 微型计算机原理与接口技术_0
├—21世纪高等院校计算机科学与技术规划教材 Java程序设计简明教程_0
├—21世纪高等院校计算机科学与技术规划教材 微机原理与接口技术 (80386-Pe_0
├—21世纪高等院校计算机系列教材 Java程序设计基础_0
├—21世纪高等院校计算机系列教材 Java程序设计实验与实训_0
├—21世纪高等院校计算机系列教材 管理信息系统_0
├—21世纪高等院校计算机系列教材 编程逻辑与结构化程序设计 (第三版)_0
├—21世纪高职高专信息技术教材 数据库原理及应用教程_0
├—21高等学校电子信息类专业规划教材 计算机引论_0
├—301例题解析电工电路 (中册)_0
├—372例题解析电工电路 (上册)_0
├—488例题解析电工电路 (下册)_0
├—8051单片机彻底研究 基础篇_0
├—8051单片机彻底研究 实习篇_0
├—8051单片机数据传输接口扩展技术与应用实例_0
├—Adobe 数字艺术中心 InDesign CS标准教材_0
├—Advanced C++ (中文版)_0
├—APSL参数化有限元分析技术及其应用实例_0
├—ASP+SQL Server网络应用系统开发与实例_0
├—ASP信息系统设计与开发实列_0
├—Authorware 6_5多媒体制作基础教程_0
├—BHDL实例剖析_0
├—BIOS、注册表与硬盘终极解析_0
├—Blackfin系列DSP原理与系统设计_0
├—C#Builder编程起跑_0
├—C#大学教程_0
├—C#应用程序开发标准教程_0
├—C#程序设计培训教程_0
├—C#面向对象程序设计:台版_0
├—C++ Templates中文版_0
├—C++Builder 6实用编程100例_0
├—C++同构化对象程序设计原理_0
├—C++多范型设计_0
├—C++大学自学教程(第7版)_0
├—C++捷径教程 第3版_0
├—C++程序设计_0
├—C++程序设计实验指导与实训_0
├—C++编程惯用法——高级程序员常用方法和技巧_0
├—C++网络编程 卷2 基于ACE和框架的系统化复用_0
├—C++面向对象程序设计 (第四版)_0
├—CAXA电子图板XP实用教程_0
├—CCNA学习指南 (中文版) (640-801)_0
├—CDMA 无线通信原理_0
├—CPLD_FPGA可编程逻辑器件应用与开发_0
├—C_0
├—C语言与MATLAB接口:编程与实例_0
├—C语言程序设计2_0
├—C语言程序设计3_0
├—C语言程序设计_0
├—C语言程序设计导学_0
├—C语言精彩编程百例_0
├—Delphi 7_0程序设计教程_0
├—Delphi 7应用教程_0
├—Delphi 7数据库开发教程_0
├—Delphi 7数据库高级教程_0
├—Delphi 7程序设计_0
├—Delphi 7课程设计案例精编_0
├—Delphi 程序设计技能百练_0
├—DELPHI 经典游戏程序设计40例_0
├—Delphi串口通信技术与工程实践_0
├—Delphi数据库开发实例解析_0
├—Delphi数据库编程_0
├—Delphi数据库高级实例导航_0
├—Delphi源代码分析_0
├—Delphi程序设计_0
├—Delphi程序设计实训_0
├—Delphi程序设计教程_0
├—Delphi精要2_0
├—Delphi精要_0
├—DSP 通信工程技术应用_0
├—DSP信号处理技术应用_0
├—DSP技术及应用_0
├—DSP控制系统的设计与实现_0
├—DSP算法设计与系统方案_0
├—DSP系统设计与实践_0
├—DSP芯片的原理与开发应用 (第3版)_0
├—DSP集成开发环境:CCS及DSP_BIOS的原理与应用_0
├—DWDM技术原理与应用_0
├—EDA与数字系统设计_0
├—EDA工程实践_0
├—Enterprise Java Bean程序设计实例详解_0
├—Excel 2003中文版入门与提高_0
├—IBM PC 80X86汇编语言程序设计_0
├—IBM信息集成技术原理及应用_0
├—ICSA密码学指南_0
├—IEEE 802_11无线局域网_0
├—IEEE1394接口技术_0
├—Intel微处理器结构、编程与接口 (第六版)_0
├—Intel汇编语言程序设计 第四版_0
├—IP宽带通信网络技术_0
├—J2EE 应用与实践技巧:JAVA设计模式、自动化与性能_0
├—J2EE网络编程标准教程_0
├—J2METM技术手册_0
├—J2ME开发大全_0
├—Java 2学习指南——Sun Certified Programmer_0
├—Java 2实用教程_0
├—Java 2程序设计技能百练_0
├—Java 2简明教程_0
├—Java Web服务开发_0
├—Java 国际认证(SCJP)典型试题1000例_0
├—Java 模式_0
├—Java 游戏编程_0
├—Java 课程设计案例精编_0
├—Java与CORBA客户 服务器编程 第二版_0
├—Java信息系统设计与开发实例_0
├—Java基础教程_0
├—Java实用系统开发指南_0
├—Java实用编程100例_0
├—Java并发编程:设计原则与模式_0
├—Java手机_PDA程序设计入门_0
├—Java数值方法_0
├—Java数据对象_0
├—Java数据库高级教程_0
├—Java数据结构和算法 (第二版)_0
├—Java极限编程_0
├—JAVA程序设计2_0
├—Java程序设计3_0
├—Java程序设计_0
├—Java程序设计基础 (第3版)_0
├—Java程序设计实战训练_0
├—Java程序设计技巧与开发实例_0
├—Java程序设计教程_0
├—Java程序设计高级主题_0
├—Java算法 (第3版,第1卷)_0
├—Java编程原理:面向工程和科学人员_0
├—JAVA缺陷_0
├—Java网络编程基础_0
├—Java语言程序设计_0
├—Java语言程序设计教程_0
├—Java课程设计_0
├—Java软件开发2_0
├—Java软件开发_0
├—Java项目开发实践_0
├—Java高级实用编程_0
├—Jave 2认证考试学习指南 (第四版) (英文版)_0
├—JBuilder 9_0入门与提高_0
├—JBuilder 9_0程序设计——Java程序员成功之路_0
├—JBuilder精髓_0
├—JSP信息系统设计与开发实例_0
├—MATLAB 6_5及其在信号处理中的应用_0
├—MATLAB 6_5图形图像处理_0
├—MATLAB 7_0实用指南 (上册)_0
├—MATLAB 7_0实用指南 (下册)_0
├—MATLAB M语言高级编程_0
├—Matlab 小波分析工具箱原理与应用_0
├—MATLAB与外部程序接口_0
├—MATLAB仿真技术与应用教程_0
├—MATLAB仿真技术主导实例应用教程_0
├—MATLAB信息工程工具箱技术手册_0
├—MATLAB及其在电路与控制理论中的应用_0
├—Matlab图像处理与应用_0
├—MATLAB图形图像处理应用教程_0
├—MATLAB工具箱应用_0
├—MATLAB应用数学工具箱技术手册_0
├—Matlab接口技术与应用_0
├—MATLAB控制工程工具箱技术手册_0
├—MATLAB数学计算范例教程_0
├—MATLAB有限元分析与应用_0
├—MATLAB电力系统设计与分析_0
├—MATLAB程序设计_0
├—MATLAB符号运算及其应用_0
├—MATLAB自动控制原理习题精解_0
├—MCS-51单片机原理及应用实例_0
├—MCS-51系列单片机原理与接口技术_0
├—MCS-51系列单片机系统及其应用 (第二版)_0
├—Microsoft SQL Server 2000宝典_0
├—OP放大电路设计_0
├—Oracle9i数据库原理与应用教程_0
├—OrCAD电路设计_0
├—PCB电磁兼容技术——设计实践_0
├—PC控制及接口程序设计实例_0
├—PIC 单片机原理与接口技术_0
├—PowerBuilder9_0数据窗口技术_0
├—PowerPCB高速电子电路设计与应用_0
├—Protel 2004电路原理图及PCB设计_0
├—Protel 99 SE印制电路板设计教程_0
├—Protel 99 SE原理图与PCB及仿真_0
├—Protel DXP 电路原理图设计指南_0
├—Protel DXP印制电路板设计指南_0
├—Protel DXP电路原理图与PCB设计_0
├—Protel DXP电路原理图与电路板设计教程_0
├—Protel DXP电路图及电路板设计实用教程_0
├—Protel DXP电路设计与仿真_0
├—Protel DXP电路设计与制版实用教程_0
├—Protel DXP电路设计与应用2_0
├—Protel DXP电路设计入门与应用_0
├—Protel DXP电路设计入门与进阶_0
├—Protel DXP电路设计制版入门与提高_0
├—Protel DXP电路设计标准教程_0
├—PSpice 电路优化程序设计_0
├—PSpice 电路设计实用教程_0
├—PSpice电路原理与实现_0
├—PSpice电路编辑程序设计_0
├—PWM控制与驱动器使用指南及应用电路:单端控制与驱动器部分_0
├—Red Hat Linux安全与优化_0
├—Tanner Pro集成电路设计与布局实战指导_0
├—TMS320C500系列DSP系统设计与开发实例_0
├—TMS320C54x DSP应用程序设计教程_0
├—TMS320LF_LC24系列DSP的CPU与外设_0
├—UML及其建模工具的使用_0
├—UML宝典_0
├—UML工具箱_0
├—USB 接口技术_0
├—Verilog HDL数字设计与综合 (第二版)_0
├—Verilog HDL程序设计教程_0
├—Verlog HDL 综合实用教程_0
├—VHDL与微机接口设计_0
├—VHDL数字系统设计 (第二版)_0
├—VHDL电路设计实用教程_0
├—VHDL电路设计技术_0
├—Visual Basic 6_0实践指导_0
├—Visual Basic 6_0应用编程150例_0
├—Visual Basic 程序设计教程_0
├—Visual Basic6_0数据库开发技术与工程实践_0
├—Visual Basic_NET程序设计实训教程_0
├—Visual Basic程序设计2_0
├—Visual Basic程序设计_0
├—Visual C#_NET程序设计经典_0
├—Visual C++ 6_0应用编程150例_0
├—Visual C++ 6_0数据库开发技术与工程实践_0
├—Visual C++6_0数字图像编码_0
├—Visual C++_MATLAB图像处理与识别实用案例精选_0
├—Visual C++_NET数字图像处理技术与应用_0
├—Visual C++_NET程序设计入门_0
├—Visual C++_NET编程实例_0
├—Visual C++_Turbo C串口通信编程实践_0
├—Visual C++数字图像实用工程案例精选_0
├—Visual C++网络通信程序开发指南_0
├—Visual C++网络通信编程实用案例精选_0
├—Visual FoxPro上机实践指导教程_0
├—Visual FoxPro程序设计教程_0
├—Visual Prolog编程、环境及接口_0
├—VisualC++_NET MFC类库应用详解_0
├—WCDMA技术与系统设计:第三代移动通信系统的无线接入_0
├—WCDMA无线通信技术及演化_0
├—WCDMA移动通信技术_0
├—Win32汇编语言实用教程_0
├—Windows安全性编程_0
├—XML编程实例教程_0
├—·工程数学·复变函数_0
├—《Visual Basic程序设计教程》实验与习题_0
├—《中华人民共和国电子签名法》释义及实用指南_0
├—《汇编语言与微机原理》学习指导与训练_0
├—《集成电子技术基础教程》教学指导书_0
├—三星电子绝处逢生的强悍之道_0
├—三级信息管理技术_0
├—三级信息管理技术:新大纲_0
├—专用集成电路_0
├—世界著名大学核心教材 计算机类 C语言程序设计_0
├—中国半导体行业协会集成电路设计分会推荐教材 集成电路设计与九天EDA工具应用_0
├—中国电子信息产品出口研究报告_2003_0
├—中文 Visual Basic 6_0实例教程_0
├—中文CorelDRAW 11_12时尚创作200例_0
├—中文Visual Basic实例全解教程_0
├—企业商务电子化导论_0
├—企业电子商务_0
├—使用UML进行面向对象的项目管理_0
├—例题解析电子电路:数字篇_0
├—例题解析电子电路:模拟篇_0
├—信号、系统与数字信号处理_0
├—信号、系统与数字信号处理学习指导与实践_0
├—信号与系统典型题解2_0
├—信号与系统典型题解_0
├—信号与系统分析2_0
├—信号与系统分析_0
├—信号与系统学习与考研指导2_0
├—信号与系统学习与考研指导_0
├—信号与系统学习指导2_0
├—信号与系统学习指导3_0
├—信号与系统学习指导4_0
├—信号与系统学习指导_0
├—信号与系统教程2_0
├—信号与系统教程_0
├—信号与系统课程辅导_0
├—信号与线性系统分析 (第二版)_0
├—信号分析与处理_0
├—信号处理中的数学变换和估计方法_0
├—信号处理原理与应用_0
├—信号处理滤波器设计_0
├—信息与传播_0
├—信息与计算科学专业系列教材 数字信号处理_0
├—信息与通信工程研究生系列教材 信息论与编码_0
├—信息与通信工程研究生系列教材 图论及其应用_0
├—信息光学理论与应用_0
├—信息化与中国经济跨越式发展_0
├—信息化工程原理与应用_0
├—信息安全原理与应用 (第三版)_0
├—信息安全教学基础_0
├—信息安全策略与机制_0
├—信息技术与电子政务 (通用版)——信息时代的电子政府_0
├—信息技术与课程整合的理论与方法_0
├—信息技术及其应用_0
├—信息技术基础_0
├—信息技术基础教程_0
├—信息技术基础教程实验及上机指导_0
├—信息技术法 (第二版)_0
├—信息技术的商业价值_0
├—信息方法概论_0
├—信息时代的企业人力资源管理_0
├—信息时代的管理信息系统 (原书第四版)_0
├—信息检索与利用_0
├—信息理论与编码2_0
├—信息理论与编码_0
├—信息竞争论_0
├—信息管理与信息系统专业规划教材 管理信息系统_0
├—信息管理论_0
├—信息系统分析与设计教程_0
├—信息系统升级与整合:策略·方法·技巧_0
├—信息系统安全管理_0
├—信息系统集成技术 (第二版)_0
├—信息系统项目管理导论_0
├—信息经济学_0
├—信息经济学与信息管理_0
├—信息经济学引论:激励与合约 (第二版)_0
├—信息经济论_0
├—信息网络传播权研究_0
├—信息网络经济的管理与调控:美国“新经济周期”研究_0
├—信息论与编码理论 第二版_0
├—信息资源管理_0
├—信息隐藏与数字水印_0
├—信息隐藏技术实验教程_0
├—先进PID控制MATLAB仿真 (第二版)_0
├—光信息网络_0
├—光信息通信技术实用手册_0
├—光纤通信_0
├—光纤通信原理与技术_0
├—光纤通信技术_0
├—光纤通信系统原理与实验教程_0
├—光纤通信系统及其应用_0
├—光纤通信:通信用光纤、器件和系统_0
├—全光光纤通信网_0
├—全国信息技术人才培养工程指定培训教材 平面设计基础_0
├—全国大学生电子设计竞赛获奖作品汇编:第一届-第五届_0
├—全国计算机技术与软件专业技术资格(水平)考试·程序员分册_0
├—全国计算机技术与软件专业技术资格(水平)考试·网络工程师分册_0
├—全国计算机技术与软件专业技术资格(水平)考试·网络管理员分册_0
├—全国计算机技术与软件专业技术资格(水平)考试·软件设计师分册_0
├—全国计算机等级考试三级教程 信息管理技术_0
├—全国计算机等级考试三级模拟题精选与详解 信息管理技术_0
├—全国计算机等级考试三级模拟题解 信息管理技术_0
├—全国计算机等级考试三级辅导 信息管理技术_0
├—全国计算机等级考试二级教程:基础知识和Java语言程序设计_0
├—全国计算机等级考试二级模拟题解:基础知识和Java语言程序设计_0
├—全国计算机等级考试应试辅导 QBASIC语言(二级)难点、错点解析_0
├—全国计算机等级考试教程 信息管理技术 (三级) (2004修订版)_0
├—全国计算机等级考试考点分析、题解与模拟 (三级信息管理技术)_0
├—全国计算机等级考试(三级信息管理技术)一册通_0
├—公司信息战略与管理:教程与案例 (原书第6版)_0
├—内容产业论:数字新媒体的核心_0
├—制造业信息化与信息编码_0
├—动态网页设计与电子商务_0
├—北京市高等教育精品教材立项项目 实用电子电路基础_0
├—半导体分立元器件集成电路装调_0
├—单片开关电源:应用电路·电磁兼容·PCB布线_0
├—单片微型计算机原理、应用及接口技术 (第2版)_0
├—单片机典型模块设计实例导航_0
├—单片机原理与实用技术_0
├—单片机原理与应用2_0
├—单片机原理与应用_0
├—单片机原理及其接口技术 (第二版)_0
├—单片机原理及其接口技术 (第二版)_0
├—单片机原理及其接口技术学习辅导与实践教程_0
├—单片机原理及应用_0
├—单片机原理及接口技术2_0
├—单片机原理及接口技术3_0
├—单片机原理及接口技术_0
├—单片机实用技术_0
├—单片机嵌入式应用的线开发方法_0
├—单片机应用技术_0
├—单片机应用系统设计与产品开发_0
├—单片机控制工程实践技术_0
├—卫星通信系统_0
├—四维时空逻辑_0
├—国外电子与通信教材系列 信号与系统 (第二版)_0
├—国外经典教材 C++数据结构与程序设计_0
├—国外经典计算机科学教材 逻辑与计算机设计基础 (第三版)_0
├—国外著名高等院校信息科学与技术优秀教材 C算法 第一卷,基础、数据结构、排序和搜_0
├—国外著名高等院校信息科学与技术优秀教材 密码学概论 (中文版)_0
├—国外著名高等院校信息科学与技术优秀教材 面向对象编程 C++和Java 比较教程_0
├—国外计算机科学教材系列 现代编译器的Java实现 (第二版)_0
├—国外计算机科学经典教材 JAVA 基础教程:从问题分析到程序设计_0
├—国外计算机科学经典教材 数据结构 Java 语言描述 (第二版)_0
├—国外高校电子信息类优秀教材 (翻译版) 压缩视频通信_0
├—国家信息化技术培训指定教材 硬件维护工程师标准培训教程_0
├—国防科工委十五规划教材 网络与信息安全_0
├—国际电子商务培训认证专用教材 国际电子商务程序设计教程_0
├—国际电子商务概论_0
├—图像信息压缩_0
├—图像数字记录_0
├—图像编码基础和小波压缩技术——原理、算法和标准_0
├—图表细说电子元器件_0
├—图解晶体管实用电路_0
├—图解电工电子基础_0
├—基于Java的计算机图形学_0
├—基于MCS-51单片机的嵌入式系统设计_0
├—声光信号处理及应用_0
├—复变函数与拉普拉斯变换习题指导_0
├—复变函数与积分变换学习指导_0
├—复变函数论与运算微积_0
├—大型软件体系结构:使用UML实践指南_0
├—大学信息技术基础教程_0
├—大学生素质教育系列教材 复变函数学习指导_0
├—大学英语六级词汇背诵词典
├—大学计算机信息技术学习指导_0
├—大学计算机基础教育规划教材 Visual Basic NET程序设计_0
├—大容量数据存储系统编码_0
├—天津市高等学校计算机基础课程规划教材 C程序设计教程 (第二版)_0
├—奇思异想编程序 Delphi篇_0
├—学习指导与题典:离散数学_0
├—学习指导与题典:计算机网络与通信_0
├—完整的数字设计_0
├—实用化工计算机模拟:MATLAB在化学工程中的应用_0
├—实用射频技术_0
├—实用电动机控制电路200例_0
├—实用电工与电子技术问答_0
├—实用电工电路图集_0
├—实用电路基础_0
├—实用软件测试过程_0
├—实验电子技术_0
├—宽带移动通信中的先进信道编码技术_0
├—宽带通信_0
├—宽带通信网与组网技术_0
├—小波分析信息传输基础_0
├—小灵通(PAS)个人通信接入系统 (修订版)_0
├—嵌入式微处理器模拟接口设计 (第二版)_0
├—嵌入式软件测试_0
├—工程电磁场数值计算_0
├—差错控制编码_0
├—常用充电器电路与应用_0
├—应用程序设计编制(Delphi 平台)Delphi 6_0_7_0职业技能培训教程_0
├—建筑物电子信息系统防雷技术设计手册_0
├—建筑电气常用设备模块化控制电路图集_0
├—建筑通信与网络技术_0
├—开发专家之Sun ONE J2EE技术参考手册_0
├—彩色图像工程_0
├—彩色电视机单元电路应用与维修手册_0
├—微型计算机原理与接口技术3_0
├—微型计算机原理与接口技术_0
├—微型计算机硬件技术教程-原理·汇编·接口及体系结构_0
├—微处理机原理与接口技术_0
├—微控制器原理及接口技术实验教程_0
├—微机原理与接口技术2_0
├—微机原理与接口技术4_0
├—微机原理与接口技术_0
├—微机原理与接口技术综合实验教程_0
├—微机原理及接口技术实验教程_0
├—微机原理及软硬件接口技术_0
├—微机接口技术500问_0
├—微波固态电路_0
├—微波工程基础_0
├—微波技术2_0
├—微波技术_0
├—微观信息管理_0
├—快速开发信息管理系统:新平台、新方法_0
├—怎样用电脑设计电子线路_0
├—怎样看楼宇常用设备电气控制电路图_0
├—振荡电路的设计与应用_0
├—捉虫历险记——常见C++Bug大围剿_0
├—控制工程与信号处理_0
├—控制系统MATLAB计算机及仿真 (第二版)_0
├—操作系统原理Linux篇_0
├—数字万用表检测方法与应用 (世纪新版)_0
├—数字与逻辑电路
├—数字专用集成电路的设计与验证_0
├—数字信号处理2_0
├—数字信号处理3_0
├—数字信号处理_0
├—数字信号处理典型题解及自测试题_0
├—数字信号处理原理及实现_0
├—数字信号处理实践方法 (第2版)_0
├—数字信号处理教程:MATLAB释义与实现_0
├—数字信号处理:系统分析与设计_0
├—数字信号微处理器的原理与开发 (第二版)_0
├—数字制造_0
├—数字化战场_0
├—数字化测量技术与应用_0
├—数字化网络化制造技术_0
├—数字图像处理及应用_0
├—数字城堡_0
├—数字城市建设的理论与策略_0
├—数字媒体:作品观摩与点评_0
├—数字广播电视技术文选_0
├—数字微波通信_0
├—数字技术与著作权:观念、规范与实例_0
├—数字时代的影像制作_0
├—数字时代的电视图像_0
├—数字显示测量仪表_0
├—数字电子技术_0
├—数字电子技术基础 (第四版) 全程辅导_0
├—数字电子技术基础 (第四版) 导教·导学·导考_0
├—数字电子技术基础_0
├—数字电视原理_0
├—数字电视广告_0
├—数字电路与逻辑设计教程2_0
├—数字电路与逻辑设计教程_0
├—数字电路设计完全手册_0
├—数字的美术——CorelDRAW Illustrator艺术插画设计经典案例剖析_0
├—数字签名原理及技术_0
├—数字系统设计:从数字技术基础到ASIC设计的解析_0
├—数字系统逻辑设计
├—数字系统逻辑设计3_0
├—数字系统逻辑设计_0
├—数字视频解决方案:创建、编辑与共享数字视频_0
├—数字设计 (第三版)_0
├—数字通信技术_0
├—数字逻辑
├—数字逻辑2_0
├—数字逻辑_0
├—数字逻辑与VHDL设计_0
├—数字逻辑基础
├—数字逻辑基础_0
├—数字逻辑技术基础_0
├—数字逻辑电路_0
├—数字逻辑电路的ASIC设计2_0
├—数字逻辑电路的ASIC设计_0
├—数字逻辑电路设计
├—数字逻辑电路设计2_0
├—数字逻辑电路设计_0
├—数字逻辑电路设计与实现_0
├—数字逻辑的图形方法2_0
├—数字逻辑的图形方法_0
├—数字集成电路与嵌入式内核系统可测试性设计_0
├—数字集成电路:电路、系统与设计 (第二版)_0
├—数字集群 移动通信系统 (第二版)_0
├—数学物理方法_0
├—数学物理方程及其近似方法_0
├—数据库系统工程师
㈤ 有哪些JAVA设计模式呢
1、FACTORY?追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
2、BUILDER?MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖) 建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD?请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。 工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE?跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要) 原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。
5、SINGLETON?俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事) 单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。 [b:9ceca65206]结构型模式[/b:9ceca65206]
6、ADAPTER?在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我) 适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。
7、BRIDGE?早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了 桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
8、COMPOSITE?Mary今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去商店,你自己挑。”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买。”“喂,买了三件了呀,我只答应送一件礼物的哦。”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻烦你包起来。”“……”,MM都会用Composite模式了,你会了没有? 合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。
9、DECORATOR?Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗? 装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。
10、FACADE?我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。 门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。
11、FLYWEIGHT?每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了,再不用一个字一个字敲了。共享的句子就是Flyweight,MM的名字就是提取出来的外部特征,根据上下文情况使用。 享元模式:FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象,而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。
12、PROXY?跟MM在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自己的回答,接收到其他的话时再通知我回答,怎么样,酷吧。 代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。 [b:9ceca65206]行为模式[/b:9ceca65206]
13、CHAIN OF RESPONSIBLEITY?晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑! 责任链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接 起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。
14、COMMAND?俺有一个MM家里管得特别严,没法见面,只好借助于她弟弟在我们俩之间传送信息,她对我有什么指示,就写一张纸条让她弟弟带给我。这不,她弟弟又传送过来一个COMMAND,为了感谢他,我请他吃了碗杂酱面,哪知道他说:“我同时给我姐姐三个男朋友送COMMAND,就数你最小气,才请我吃面。”, 命令模式:命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。
15、INTERPRETER?俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、去看电影的方法等等,跟MM约会时,只要做一个Interpreter,照着上面的脚本执行就可以了。 解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构,也就是一系列的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。
16、ITERATOR?我爱上了Mary,不顾一切的向她求婚。 Mary:“想要我跟你结婚,得答应我的条件” 我:“什么条件我都答应,你说吧” Mary:“我看上了那个一克拉的钻石” 我:“我买,我买,还有吗?” Mary:“我看上了湖边的那栋别墅” 我:“我买,我买,还有吗?” Mary:“我看上那辆法拉利跑车” 我脑袋嗡的一声,坐在椅子上,一咬牙:“我买,我买,还有吗?” …… 迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。
17、MEDIATOR?四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。 调停者模式:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。
18、MEMENTO?同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,这样可以随时察看以前的记录啦。 备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。
19、OBSERVER?想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦 观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
20、STATE?跟MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的MM就会说“有事情啦”,对你不讨厌但还没喜欢上的MM就会说“好啊,不过可以带上我同事么?”,已经喜欢上你的MM就会说“几点钟?看完电影再去泡吧怎么样?”,当然你看电影过程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦。 状态模式:状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。
21、STRATEGY?跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,单目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。 策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。
22、TEMPLATE METHOD??看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template method),但每个步骤针对不同的情况,都有不一样的做法,这就要看你随机应变啦(具体实现); 模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。
23、VISITOR?情人节到了,要给每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个人的特点,每张卡片也要根据个人的特点来挑,我一个人哪搞得清楚,还是找花店老板和礼品店老板做一下Visitor,让花店老板根据MM的特点选一束花,让礼品店老板也根据每个人特点选一张卡,这样就轻松多了; 访问者模式:访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易,就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个的节点类中。当使用访问者模式时,要将尽可能多的对象浏览逻辑放在访问者类中,而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。
㈥ 如何编写一个简单的java web前后端实例
Java代码编写的30条实践建议,很多人认为学习java需要较好的计算机语言基础,而事实上高中学历的学习java,月薪过万的比比皆是,Java代码编写的30条实践建议,java知识点学习贵在积累。
Java代码编写的30条实践建议:
(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。
例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标 志出它们属于编译期的常数。
Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者e等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。
(2) 为了常规用途而创建一个类时,请采取"经典形式",并包含对下述元素的定义:
equals()
hashCode()
toString()
clone()(implement Cloneable)
implement Serializable
(3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。
(4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。
(5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。
(6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:
■一个复杂的开关语句:考虑采用"多形"机制
■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现
■许多成员变量在特征上有很大的差别:考虑使用几个类
(7) 让一切东西都尽可能地"私有"--private。可使库的某一部分"公共化"(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。
在多线程环境中,隐私是特别重要的一个因素--只有private字段才能在非同步使用的情况下受到保护。
(8) 谨惕"巨大对象综合症"。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。
(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。
(10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的"用内部类改进代码")。
(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。
(12) 避免使用"魔术数字",这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道"100"到底是指"数组大小"还是"其他全然不同的东西"。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。
(13) 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常--如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。
(14) 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean(布尔)标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,并已丢弃了从RuntimeException继承的一个类(如果还没有的话),从而指出一个编程错误。在采取象这样的方案之前,请确定finalize()能够在自己的系统中工作(可能需要调用System.runFinalizersOnExit(true),从而确保这一行为)。
(15) 在一个特定的作用域内,若一个对象必须清除(非由垃圾收集机制处理),请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。
(16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。
(17) 创建大小固定的对象集合时,请将它们传输至一个数组(若准备从一个方法里返回这个集合,更应如此操作)。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将对象"造型"到数组里。
(18) 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。
(19) 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果(参见第7章的详细说明)。
(20) 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。
(21) 在现成类的基础上创建新类时,请首先选择"新建"或"创作"。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许新建的场合使用了继承,则整个设计会变得没有必要地复杂。
(22) 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色,这是绝对应该避免的:应直接使用一个"颜色"字段。
(23) 为避免编程时遇到麻烦,请保证在自己类路径指到的任何地方,每个名字都仅对应一个类。否则,编译器可能先找到同名的另一个类,并报告出错消息。若怀疑自己碰到了类路径问题,请试试在类路径的每一个起点,搜索一下同名的.class文件。
(24) 在Java 1.1 AWT中使用事件"适配器"时,特别容易碰到一个陷阱。若覆盖了某个适配器方法,同时拼写方法没有特别讲究,最后的结果就是新添加一个方法,而不是覆盖现成方法。然而,由于这样做是完全合法的,所以不会从编译器或运行期系统获得任何出错提示--只不过代码的工作就变得不正常了。
(25) 用合理的设计方案消除"伪功能"。也就是说,假若只需要创建类的一个对象,就不要提前限制自己使用应用程序,并加上一条"只生成其中一个"注释。请考虑将其封装成一个"独生子"的形式。若在主程序里有大量散乱的代码,用于创建自己的对象,请考虑采纳一种创造性的方案,将些代码封装起来。
(26) 警惕"分析瘫痪"。请记住,无论如何都要提前了解整个项目的状况,再去考察其中的细节。由于把握了全局,可快速认识自己未知的一些因素,防止在考察细节的时候陷入"死逻辑"中。
(27) 警惕"过早优化"。首先让它运行起来,再考虑变得更快--但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候,才应进行优化。除非用专门的工具分析瓶颈,否则很有可能是在浪费自己的时间。
性能提升的隐含代价是自己的代码变得难于理解,而且难于维护。
(28) 请记住,阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己,还是对后来的人,它们都是相当重要的。如对此仍有怀疑,那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折,这样或许能将你说服。
(29) 如认为自己已进行了良好的分析、设计或者实施,那么请稍微更换一下思维角度。试试邀请一些外来人士--并不一定是专家,但可以是来自本公司其他部门的人。请他们用完全新鲜的眼光考察你的工作,看看是否能找出你一度熟视无睹的问题。采取这种方式,往往能在最适合修改的阶段找出一些关键性的问题,避免产品发行后再解决问题而造成的金钱及精力方面的损失。
(30) 良好的设计能带来最大的回报。简言之,对于一个特定的问题,通常会花较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法,以后的工作就轻松多了,再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报(甚至无可估量)。而且由于自己倾注了大量心血,最终获得一个出色的设计方案,成功的快感也是令人心动的。坚持抵制草草完工的诱惑--那样做往往得不偿失。
㈦ java经典面试题
整数划分问题
正整数n的划分数p(n)=q(n,n)
代码回:答
public static int q(int n,int m){
if((n==1)||(n<1)) return 0;
if (n<m return q(n,n));
if (n==m) return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);
}