自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yqj2065的博客

每天进步一点点...

原创 例解OOD(Java8)-导航

最后编辑时间:2019.12.14 《例解OOD(Java8)》 上机题。 三门语言的编程环境-Pelles c、DrRacket和BlueJ 实验1.框架设计者 实验2.行为参数化 实验3.使用工具类God 实验4 求和方法的一般化累积函数 实验5 复合函数-桥接模式 实验...

2013-02-19 21:37:49 8848 1

原创 5.5 Map-Reduce(映射-归约)模型

Java8引入的流即java.util.stream.Stream,被称为具有函数式编程风格。其流水线操作就属于本章的主题:封闭性操作。对流的认识和把握,可以溯源于映射-归约模型。 Map-Reduce/映射-归约,是一种借鉴信号处理过程、对大规模数据进行处理的模型。它包含3方面: 对于一个数...

2020-06-13 22:36:40 22 0

原创 增强内容,归整博客

CSDN上的博客,有技术含量的高质量文章,越来越少了。 我的博客,也很少发新东西。一直在将原有的文章加以补充、整理和系统化。修改原来的文章、删除垃圾文章,留下来的为学习资料。 ...

2020-05-20 13:22:48 45 0

原创 6.2访问者模式(5.11)

6.1 Java模拟 双分派(Double Dispatch) 上节[6.1 Java模拟双分派]重点关注源代码的变化。本节讨论实验结果的意义——访问者(Visitor)模式使用双分派技术,能够为被访问者添加新的操作。【注:Java模拟双分派,解决了Visitor模式的结构和实现方面的问题。本节...

2019-12-14 12:25:36 123 0

原创 桥接模式(4.2)

桥接模式,将2次以上的策略选择串接起来形成大策略。

2019-12-02 01:42:30 260 0

原创 写作思考:命令模式(5.2)

命令模式是一个学习起来相对较难的模式。难点在于Invoker为什么会想到不管不顾地依赖Command,而后者封装一个普适方法exe ()。另一方面,在于GoF对于命令模式意图的描述夸大其词,使得命令模式与策略模式/行为参数化混淆。 命令模式(5.2)放在哪里讲,一直定不下来。可以放在第二章行为参...

2019-11-24 13:45:22 94 0

原创 定义Java的三元函数

java.util.function包Function家族很庞大,共25个函数接口。但是Java 库只提供单个参数和两个参数的函数映射接口。如果需要更多参数,如三元函数,可以自己编写,还可以采用柯里化技术先获得BiFunction对象。 package chap2.closure.curryi...

2019-11-18 20:28:28 126 0

原创 2.2 模板方法模式(5.10)

看一本关于设计模式的书,首先翻阅其模板方法模式。一方面,模板方法模式极为基础,也包含很多设计思考;另一方面,它反映作者对设计模式的理解程度,这一章写得不好,一定是水货师傅。

2019-11-15 18:01:10 205 0

原创 0.1编程语言的掌握

搞了一个GitChat,作为第0章基础-0.1三大抽象。 人们常说:“编程语言只是工具,重要的是学会编程的思想”,那么,什么是编程的思想呢?更现实的说法,(一个合格的老师)在讲授一门语言时,应该介绍什么呢? 本次活动,介绍在编程语言的共性方面的编程的思想,即编程语言对程序员的一般性需求的支持。不...

2019-06-21 17:32:48 160 0

原创 什么是依赖注入——板砖拍Martin Fowler

今天yqj2065用板砖,拍一下Martin Fowler的《IoC容器和依赖注入模式》(Inversion of Control Containers and the Dependency Injection pattern[1] )。将我在其他博客中关于他这篇文章的吐槽,条理化。 1.Mar...

2018-08-11 11:55:09 691 2

原创 拍到什么程度

写一本《OOD(Java8)》,最难的地方,在于OOD领域存在大量错误认识,而我们又必须建立完整的逻辑体系。 在讲解OOD的“正确”知识时,我就需要拍一下GoF、Robert C. Martin、Martin Fowler。对于GoF,我是心怀敬意的,但是Robert C. Martin的DIP...

2018-07-13 08:56:25 218 0

原创 2017-2018-2 OOD试卷AB

一、 编程论述题:框架设计者1. 以SortTest和IntSort为例,说明什么是控制反转IoC(7分)2.什么是抽象依赖原则,它与应用程序、框架的关系(5分)3. 有一个接口如下 package util;@FunctionalInterface  public interface  Doub...

2018-06-26 20:00:17 974 2

原创 《OOD实战(Java8)》难产中

虽然yqj2065自认为不是一个很负责的老师,但是比起绝大多数老师,我算得上对得起我的学生。我讲课的内容,全世界独一无二。你们不会在任何其他人那里获得,除了我的博客中,零零散散。我也准备了大量例程、文字...但是将它们搞成一本书,还差得远。但是,我有更有趣的事情要做,身体也不宜久坐,写书挺无趣。最...

2018-06-24 22:39:07 405 0

原创 我是OO砖家

yqj2065是OO砖家.作为OO砖家,我都不屑拍国内的设计模式书籍的作者,都是垃圾书,有什么好拍的。要拍的是GoF、Robert C. Martin、Martin Fowler这些装逼的货。   并且,要求学生一起拍。拍得不好,我挂你!...

2018-06-10 21:40:34 421 0

原创 同学们写学习笔记——认识IoC、DI和DIP

【2018.8.3】我准备了一个Chat,介绍如下: 面向对象设计/OOD领域充满混乱。当我们建立 OOD 的完整的逻辑体系时,需要澄清一些错误认识。特别是依赖倒置原则/DIP、控制反转/IoC 和依赖注入/DI 搅合在一起,成为“那些年搞不懂的高深术语”,本活动的出发点,旨在解释这些高深术语,...

2018-05-25 14:13:46 1410 2

原创 OOD/设计模式学习的编程环境

本书介绍OOD/设计模式的使用的语言主要为Java,还用到C和Scheme语言。 Java开发环境为BlueJ; 使用的其他语言环境: C语言:Pelles c Scheme语言:DrRacket ...

2018-05-17 13:28:16 524 0

原创 什么是闭包?

对于吃,人们有一个基本理解——填肚子。正是因为有一个公认的基础,所以人们容易理解更复杂的说法,如吃饭/吃酒、吃苦/吃醋/吃亏、吃货、吃人。 当我以Java作为通常的工作语言时,yqj2065一般不使用闭包这个术语——我不希望你从Java中知道了闭包概念,在别的语言中又要重新理解这个概念。由于在讲...

2018-01-27 19:57:03 620 0

原创 0.1.1编程类课程的问题

本文已经纳入编程语言应该学些什么,作为引子。 在讲授一门语言时,应该介绍什么呢?我认为,简单地说,三大抽象(如果是面向对象的语言)+其编程范式。 我国绝大多数高校,是从C语言教学开始的。从数据抽象、行为抽象的角度看,C语言并不是合适的入门级编程语言(后面再解释)。现行教学体系中,编程类课程有一...

2018-01-18 19:43:08 388 1

原创 考前提示

  考试前请学生们注意: 1.本课程开卷,不限制你带任何书籍和资料。我不知道教务处有没有限制你们不得使用手机,但是我不建议你们用手机,因为你肯定不懂才到处查资料,而你查到的网上的资料,大多数我会认为是错误的。 2.不得大篇幅抄袭我的博客中的内容。你不会的,抄唐诗宋词比较好。抄我的,驴头不对马...

2018-01-14 23:42:23 875 1

原创 1.4.2 依赖倒置原则(Dependency Inversion Principle、DIP)的错误

摘要:依赖倒置原则(Dependency Inversion Principle、DIP)是一个错误的尝试,Robert C. Martin希望将针对接口编程和控制反转两个概念纳入其DIP中,却形成了一个思路混乱的、不知所云的原则。作为正文,不能够喜怒笑骂。草稿抛弃依赖倒置原则将被修改为吐槽版。 ...

2017-12-29 21:55:10 524 0

原创 动态类型+面向对象 = shit

动态类型+面向对象 = shit 1.动态类型 动态类型语言,属于看起来方便,用后麻烦的东西,我不喜欢它们。除非不需要考虑软件工程场合——如作为脚本语言。 动态类型+高阶函数,使得Scheme定义的op非常强大,如同酒驾的司机,非常狂野。 (define (op a b how-op...

2017-12-26 18:30:54 476 0

原创 为什么人们说Python容易?

在讲OOD时,我用了C、Java和Scheme的例子,对语言我比较了解。 有学生说Python学习起来很容易。Python有动态类型、面向对象、lambda表达式,它会容易?

2017-12-24 12:16:59 2426 1

原创 实验3 累积函数

关键词: 实验4 求和方法的一般化 , 模板方法模式,通用函数,高阶函数

2017-12-24 10:06:56 2358 0

原创 《Head First 设计模式·4工厂模式》评价

近期整合静态工厂、工厂方法和抽象工厂模式。因为我很厌恶DIP,所以仔细看了一下《Head First 设计模式·4工厂模式》。 一个字评价烂,两个字,超级烂。 这本书的行文风格,各有喜好,我不评价——虽然我不喜欢花里胡哨的插图等。我们看其内容。 不应该用new,这节没有问题。《识别变化的方面...

2017-07-09 23:23:32 640 0

原创 打包后的工具类 God+BlueJ+ClassLoader

工具类 God为什么NetBeans环境可以但是BlueJ中不行?

2017-07-06 22:15:47 1039 1

原创 4.1.3 模板方法模式(5.10)

【2019.7.1】 看一本关于设计模式的书,首先翻阅其模板方法模式。一方面,模板方法模式极为基础,也包含很多设计思考;另一方面,它反映作者对设计模式的理解程度,这一章写得不好,一定是水货师傅。 我们通过设计累积函数,引入策略模式的扩展、模板方法模式(5.10)。 -------------...

2017-06-17 16:42:29 775 0

原创 IT界,不需要“下一个伟大的思想”

近期写《抛弃依赖倒置原则》,yqj2065不知道国内外有没有吃相似观点的,因为没有找到。 突然间,我惊奇:如此稀烂地DIP,为什么没有人质疑呢? 联想ERP.CRM...云计算、大数据...是不是IT咨询界也在复制管理界的《下一个伟大的思想》? 这是令人毛骨悚然的猜测。 如果理工科也流行文科的...

2017-06-10 23:34:43 571 3

原创 util.God -2

util.God的局限性:1)仅能够按照默认构造器创建对象;2)仅支持属性配置文件,3)不支持标注。 有同学问,yqj2065.util.God是Martin Fowler文章中的DI还是Service Locator?答:DI。 总体而言,yqj2065比较烦引入太多概念。 【Servic...

2017-05-28 19:24:59 583 0

原创 凡事都有例外-父类型依赖子类型

抛弃依赖倒置原则中,yqj2065对“抽象不应该依赖细节。细节应该依赖抽象”,描写成“一个毫无价值的废话,都能够包装成令很多人脑洞大开的原则”。 但是,凡事都有例外。虽然极其罕见,有时候父类型需要事先知道其子类型。这是一种什么样的感觉呢?

2017-05-26 13:06:16 563 0

原创 0.3.1 一切皆概念/类型

本文介绍柏拉图原则。 1.由来 面向对象编程范式的核心观念是:以概念/类型建模一切。 从编程的问题域(problem domain)中抽象/提取各种概念,符合人们的心智模型,而所有的概念被映射为解域中的类型。 面向对象编程范式的思考单元,(毕竟,基于类的语言是主流)是概念/类型,而不是实例...

2017-05-22 17:03:08 380 0

原创 恼人的Java路径

Java路径问题,超级烦人。

2017-05-12 18:14:50 532 0

原创 REPL 与Java

REPL (Read-Eval-Print-Loop)会在Java 9中引入, 这个东西,我总觉得只在表达式为编程单元的语言中、脚本语言中有点用。 在最少以函数、动辄以类为单元的编程中,这个东西就不好使了。 即使在Scheme中,我也不太喜欢这个功能。 BlueJ中code Pad...

2017-05-05 00:08:34 429 0

原创 Java 表达式如何转化成字符串输出?

复合函数z = g(f(x)),例如 f(x) = x+1 g(x) = x*x 计算其结果后,我想输出: g(x) = x*x,f(x) = x+1,g(f(2)) =9 怎么搞? 难道要将 “x*x”首先就作为字符串,编写解释器?

2017-05-01 21:47:41 807 0

原创 吐槽大全 -GoF《设计模式》

对GoF《设计模式》等面向对象设计的经典书籍的吐槽。分散在各文章中的吐槽将被删除。

2017-05-01 17:39:46 1032 0

原创 吐槽 依赖倒置原则/DIP

正文(这个比较难写,不能够喜怒笑骂)本文吐槽 依赖倒置原则(Dependency Inversion Principle、DIP)。 即使yqj2065清楚地知道Robert C. Martin想说的东西,这么胡言乱语的神经病的东西,要逐一地指出其问题,差一点 把我都搞得神经病了。所以,后面的文...

2017-04-29 00:02:11 2125 1

原创 C语言的变量

变量(variable) 是源代码中表示一个存储场所、保存值的符号化地址。 这是C/Java中关于变量的名词解释。 1.抽象 例如 int x=80; 变量x表示了内存中的某一块区间,例如从0013fed8到0013fedb这4字节,该4字节共同保存整数80;通常程序员不会在意、也不可能...

2017-04-28 00:14:49 544 0

原创 C程序的组织

使用编程语言编写程序,语言的设计者都需要考虑程序员们的程序应该如何加以组织。

2017-04-27 18:32:23 330 0

原创 按值传递的意义

按值传递的意义,使得函数对形参的赋值,不对外界造成副作用。

2017-01-15 16:11:48 479 0

原创 强大的动态绑定

在介绍4.1.2 高阶函数与回调函数时,我们说明Java语言没有函数指针,没有高阶函数,它是面向对象的。

2017-01-02 00:18:44 504 0

原创 面向对象的最重要的概念

如果选择一个面向对象的最重要的概念,你认为是( )

2016-12-31 14:32:06 525 0

提示
确定要删除当前文章?
取消 删除