水边一只青蛙在笑 ——石头和水 工厂方法模式(Factory Method),定义了一个用于创建对象的接口,让实现类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 这里在简单和工厂的基础上写工厂: 先定义一个接口 再定义其子类: 测试类: 现在应该可以发现简单工厂和工厂方法的区别了: 工 Read More
posted @ 2017-05-14 11:02 Tomas曼 Views(209) Comments(0) Diggs(1) Edit
To be, or not to be: that is the question. ——《哈姆雷特》 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 上代码: 测试类: 下面修改了Proxy类的makeMoney方法,实现了对boss对象访问的控制: 测试类: Read More
posted @ 2017-05-14 08:26 Tomas曼 Views(173) Comments(0) Diggs(0) Edit
函数应该做一件事,做好这件事,只做这一件事。 ——Clean Code 装饰模式,上代码: 先定义零件类: 再定义具体零件类(即被装饰类)继承零件类: 然后定义装饰类,继承零件类: 定义装饰类的子类: 测试类测试: 把这个例子中的Component类换成接口也是一样的: 举个例子: 需求: 定义一个 Read More
posted @ 2017-05-13 15:20 Tomas曼 Views(246) Comments(0) Diggs(0) Edit
明确是王道 ——Clean Code 类图: 先定义策略类 在定义若干策略子类 最后定义业务逻辑"上下文类" 测试类 诚然,上面的程序只是明确了框架,并没有任何实际的业务逻辑.下面来写个需求 输入单价、数量、计价方式,其中计价方式就是策略: 策略1:正常收费 策略2:打X折 策略3:满X元减Y元 输 Read More
posted @ 2017-05-13 14:41 Tomas曼 Views(242) Comments(1) Diggs(1) Edit
蜀道之难。难于上青天,侧身西望长咨嗟 ——蜀道难 类图: 定义Operation类 定义其四个子类 定义工厂类 测试类: Read More
posted @ 2017-05-13 00:49 Tomas曼 Views(175) Comments(0) Diggs(1) Edit
寒雨连江夜入吴,平明送客楚山孤。 洛阳亲友如相问,一片冰心在玉壶。 ——芙蓉楼送辛渐 持久化数据的第一种方式。在序列化之前也可以把数据打散逐行存储在文件中,然后在逐行读取。 比如定Student类 用字符输出流把Student类的所有属性存入本地文件: 张三|18|男 李四|18|女 读取一行,用| Read More
posted @ 2017-05-12 22:32 Tomas曼 Views(121) Comments(0) Diggs(0) Edit
朝辞白帝彩云间,千里江陵一日还。两岸猿声啼不尽,轻舟已过万重山。 ——早发白帝城 我们老师写代码有个特点,就是简洁。每一句的意图都十分明确。所以他讲课的速度也比较快。 跑题了,说说I/O流: 1、字节输入流 2、字符输入流 3、字节输出流 4、字符输出流 上代码: 带缓冲区的字符输入输出流 字节流读 Read More
posted @ 2017-05-12 21:41 Tomas曼 Views(172) Comments(0) Diggs(0) Edit
会当凌绝顶,一览众山小。 ——望岳 如果说有哪个排序算法不能不会,那就是快速排序(Quick Sort)了 快速排序简单而高效,是最适合学习的进阶排序算法。 直接上代码: 想象一个简单的int[] arr = {2,3,1} 第一趟:{1,3,2},i=1 第二趟:{1,2,3},j=1 跳出循环, Read More
posted @ 2017-05-12 20:00 Tomas曼 Views(213) Comments(0) Diggs(0) Edit
春蚕到死丝方尽,蜡炬成灰泪始干 ——无题 这里介绍两个比较难的算法: 1、堆排序 2、分治并归排序 先说堆。 这里请大家先自行了解完全二叉树的数据结构。 堆是完全二叉树。大顶堆是在堆中,任意双亲值都大于(或等于)其孩子值,就称其为大顶堆。 堆排序的步骤: 1、把数组想象成一个堆。数组的index+1 Read More
posted @ 2017-05-12 19:24 Tomas曼 Views(441) Comments(0) Diggs(0) Edit
落日楼头,断鸿声里,江南游子。把吴钩看了,栏杆拍遍,无人会,登临意。 ——水龙吟·登建康赏心亭 希尔算法是希尔(D.L.Shell)于1959年提出的一种排序算法。是第一个时间复杂度突破O(n²)的算法之一。 其基础是插入排序。 上代码: 增量选取△k = 2^(t-k+1)-1 (0≤k≤t≤⌊l Read More
posted @ 2017-05-12 17:36 Tomas曼 Views(267) Comments(0) Diggs(0) Edit