J_Knight_

每天进步一点点


  • 首页

  • 分类

  • 归档

  • 标签

面向对象设计的设计模式(三):行为型模式(附 Demo 及 UML 类图)

发表于 2019-03-17 | 分类于 Object-Oriented
字数统计 14,429 字 | 阅读时长 60 分钟

本篇是面向对象设计系列文章的第四篇,讲解的是设计模式中的7个比较常见的行为型模式(按照本文讲解顺序排列):

  • 模板方法模式
  • 策略模式
  • 责任链模式
  • 状态模式
  • 命令模式
  • 观察者模式
  • 中介者模式
阅读全文 »

《简约之美 - 软件设计之道》- 读书笔记

发表于 2019-01-01 | 分类于 BookNote
字数统计 5,876 字 | 阅读时长 20 分钟

本篇读书笔记的内容大部分是来自我刚参与的掘金的读书打卡活动。这次读书打卡活动选择了《简约之美:软件设计之道》这本书。我把这几次打卡的内容作了整合,也加了一点没有在打卡活动里面写的内容构成了这篇读书笔记。

本书一共有九个章节,我抽取了10个觉得比较好的段落并附加上我个人的解读。希望读者可以有些收获。

阅读全文 »

2018 年年终总结 - J_Knight_

发表于 2018-12-26 | 分类于 Career
字数统计 5,265 字 | 阅读时长 18 分钟

本篇是我今年的年终总结,主要总结了自己除了工作上的一些小目标的达成情况,包括社区,读书,健身,理财这几方面。

工作方面最大的收获是来到了爱奇艺工作,来到这个平台之后所收获的不仅仅来自于自己做的事情本身,还有接触到的新同事们,新平台带给我的种种收获,感觉自己还是非常幸运的。

工作上就提到这里,下面开始是本篇的主要内容。本篇分为三个部分:

  1. 今年达成的小目标:介绍今年已经达成的小目标以及详细情况
  2. 今年未达成的小目标:介绍今年未达成的小目标以及详细情况
  3. 展望明年:简单列一下想在明年达成的小目标。

现在就从已经达成的小目标来开始介绍。

今年达成的小目标

今年已经达成的几个小目标有以下几个:

  • 掘金社区粉丝超过1w(10300+)
  • 看完5+本技术书籍(8本)
  • 看完20+本非技术书籍(24本)
  • 减掉20+斤(21斤)
阅读全文 »

我从写技术博客中收获到了什么 - J_Knight_

发表于 2018-12-04 | 分类于 Career
字数统计 7,969 字 | 阅读时长 27 分钟

我是 JKnight ,熟悉我的人都应该知道我是一名刚工作满3年的非科班 iOS 开发者,而且一直坚持写技术博客快有2年半的时间了。

其实从去年开始就一直想分享我写博客的心得,但是一直也没有找到合适的契机,刚好在今年年底前达成了掘金粉丝量过万的小目标,索性就借着这个机会分享一下我自己关于写博客的一些收获,同时也算顺便做一个阶段性的总结。

这篇文章分为三个部分:

  1. 写技术博客的历程
  2. 写技术博客的收获
  3. 回答一些朋友(粉丝)的一些关于写博客的几个问题

第一部分先简单介绍关于我的博客的一些数据:写博客的起始时间,使用的博客平台,博客内容等等。

第二部分是本篇的重点,讲解的从博客中我的收获有哪些。

第三部分罗列了几个经常从一些朋友(粉丝)中听到的关于写博客的问题以及我的回答。

阅读全文 »

面向对象设计的设计模式(二):结构型模式(附 Demo 及 UML 类图)

发表于 2018-11-28 | 分类于 Object-Oriented
字数统计 14,127 字 | 阅读时长 56 分钟

本篇是面向对象设计系列文章的第三篇,讲解的是设计模式中的结构型模式:

  • 外观模式
  • 适配器模式
  • 桥接模式
  • 代理模式
  • 装饰者模式
  • 享元模式

该系列前面的两篇文章:

  • 面向对象设计的六大设计原则(附 Demo 及 UML 类图)
  • 面向对象设计的设计模式(一):创建型设计模式(附 Demo 及 UML 类图)
阅读全文 »

面向对象设计的设计模式(一):创建型模式(附 Demo 及 UML 类图)

发表于 2018-10-23 | 分类于 Object-Oriented
字数统计 11,977 字 | 阅读时长 47 分钟

继上一篇的面向对象设计的六大设计原则(附 Demo 及 UML 类图),本篇是面向对象设计系列的第二个部分:面向对象设计的设计模式的第一篇文章。

最开始说一下什么是设计模式。关于设计模式的概念,有很多不同的版本,在这里说一下我个人比较赞同的一个说法:

设计模式用于在特定的条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案。

去掉一些定语的修饰,这句话精简为:

设计模式为问题提供方案。

简单来看,设计模式其实就是针对某些问题的一些方案。在软件开发中,即使很多人在用不同的语言去开发不同的业务,但是很多时候这些人遇到的问题抽象出来都是相似的。一些卓越的开发者将一些常出现的问题和对应的解决方案汇总起来,总结出了这些设计模式。

因此掌握了这些设计模式,可以让我们更好地去解决开发过程中遇到的一些常见问题。而且对这些问题的解决方案的掌握程度越好,我们就越能够打破语言本身的限制去解决问题,也就是增强“软件开发的内功”。

介绍设计模式最著名的一本书莫属《设计模式 可复用面向对象软件的基础》这本书,书中共介绍了23个设计模式。而这些设计模式分为三大类:

  • 创建型设计模式:侧重于对象的创建。
  • 结构型设计模式:侧重于接口的设计和系统的结构。
  • 行为型设计模式:侧重于类或对象的行为。
阅读全文 »

面向对象设计的六大设计原则(附 Demo 及 UML 类图)

发表于 2018-09-10 | 分类于 Object-Oriented
字数统计 11,461 字 | 阅读时长 45 分钟

学习初衷与讲解方式

笔者想在iOS从业第三年结束之前系统学习一下关于设计模式方面的知识。而在学习设计模式之前,觉得更有必要先学习面向对象设计(OOD:Object Oriented Design)的几大设计原则,为后面设计模式的学习打下基础。

本篇分享的就是笔者近阶段学习和总结的面向对象设计的六个设计原则:

缩写 英文名称 中文名称
SRP Single Responsibility Principle 单一职责原则
OCP Open Close Principle 开闭原则
LSP Liskov Substitution Principle 里氏替换原则
LoD Law of Demeter ( Least Knowledge Principle) 迪米特法则(最少知道原则)
ISP Interface Segregation Principle 接口分离原则
DIP Dependency Inversion Principle 依赖倒置原则
阅读全文 »

《如何有效整理信息》- 读书笔记

发表于 2018-08-20 | 分类于 BookNote
字数统计 3,173 字 | 阅读时长 11 分钟

《如何有效整理信息》封面

本书作者(奥野宣之)介绍了一个关于整理笔记的方法:“一元笔记法”。该方法摒弃了将笔记进行分类整理的方式,而是采用了一元化的方案:不采用分类记录的方式,而是将所有分类的笔记按照时间顺序写到一起记录。

阅读全文 »

出一套 iOS 高级面试题

发表于 2018-07-24 | 分类于 Career
字数统计 3,433 字 | 阅读时长 12 分钟

一千个读者眼中有一千个哈姆雷特,一千名 iOS 程序员心目中就有一千套 iOS 高级面试题。本文就是笔者认为可以用来面试高级 iOS 程序员的面试题。

阅读全文 »

2018年 iOS 面试心得

发表于 2018-07-17 | 分类于 Career
字数统计 5,352 字 | 阅读时长 18 分钟

面试了几家公司之后,最后来到了爱奇艺(坐标上海),工作的内容是笔者个人非常感兴趣的领域。能拿到这个结果对于入行两年半&非科班的笔者来说无疑是幸运的。

阅读全文 »

数据结构 & 算法 in Swift (二):算法概述和排序算法

发表于 2018-02-08 | 分类于 Data Structure & Algorithm
字数统计 15,295 字 | 阅读时长 62 分钟

本篇是《数据结构 & 算法 in Swift》系列连载的第二篇,内容分为如下两个部分:

  • 算法基础:简单介绍算法的概念,时间复杂度与空间复杂度,递归,作为本文第二部分的背景知识。
  • 排序算法:结合Swift的代码实现来讲解冒泡排序,选择排序,插入排序,归并排序,快速排序。
阅读全文 »

数据结构 & 算法 in Swift (一):Swift基础和数据结构

发表于 2018-01-31 | 分类于 Data Structure & Algorithm
字数统计 9,870 字 | 阅读时长 42 分钟

写在前面

从本文标题中的序号可以看出,本文是一个连载的开篇。

而且这个连载的标题是:数据结构 & 算法 in Swift。从这个连载的标题中可以看出,笔者分享的是使用Swift语言来实现所学的的数据结构和算法的知识。这里面需要解释两点:

第一:为什么学习数据结构和算法?

学习通用性知识,突破技能瓶颈:笔者做iOS开发也有两年了,这期间通过从项目,第三方源码,相关应用类的编程书籍提高了些技术水平。而作为没学过数据结构和算法的非科班大军中的一员,这些知识始终是绕不过去的。因为对此类知识的掌握程度会对今后编程技能的提高有着无可估量的影响,所以就决定学习了。

第二:为什么用Swift语言来实现?

  1. 选择哪个语言并不重要,重要的是数据结构和算法本身的理解:通过两个星期的学习,如今笔者已经可以使用Swift语言来实现几种数据结构和算法了,但我相信如果我使用C语言或者Objective-C语言的话会学得更快些,因为在实现的时候由于对该语言的不熟悉导致在实现过程中踩了不少坑。不过可以反过来思考:如果我可以使用Swift来实现这些,那么我今后用C,Objective-C,甚至是Java就容易多了,再加上我还顺便学习了Swift不是么?

  2. 如今Swift的势头还在上涨:笔者已经观察到很多新的库,教学都使用了Swift语言。而且听说一些面试的朋友在面试过程中多少有问过Swift相关的知识,一些公司的新项目也有用Swift写了。

阅读全文 »

YYCache 源码解析

发表于 2018-01-23 | 分类于 iOS
字数统计 13,480 字 | 阅读时长 57 分钟

YYCache是国内开发者ibireme开源的一个线程安全的高性能键值缓存组件,代码风格简洁清晰,在GitHub上已经有了1600+颗星。

阅读它的源码有助于建立比较完整的缓存设计的思路,同时也能巩固一下双向链表,线程锁,数据库操作相关的知识。如果你还没有看过YYCache的源码,那么恭喜你,阅读此文会对理解YYCache的源码有比较大的帮助。

阅读全文 »

开源一个封装AFNetworking的网络框架 - SJNetwork

发表于 2017-12-27 | 分类于 Production
字数统计 5,229 字 | 阅读时长 21 分钟

介绍

该框架是一个通用的网络层,可以供给不同app的业务层调用。该框架封装了AFNetworking,而且有些地方借鉴了YTKNetwork的设计思路:以对象的形式封装并管理请求。

它在功能上支持:

  • 发送请求方法为GET,POST,PUT,DELETE的普通网络请求的功能
  • 上传图片功能(单张与多张上传,指定上传前的图片压缩比率)
  • 下载功能(支持断点续传和后台下载)
  • 缓存管理(写入,读取,清除缓存,计算大小)功能
  • 请求管理(查看正在进行的请求的状态,请求的单个与批量取消)功能
  • 设置请求体里的默认键值对(eg.需要添加版本号进行版本控制)
  • 添加请求头(eg.针对一些需要使用token的服务)
  • 设置服务器地址
  • 设置debug模式(调试时打印出便于调试的log,比如读取缓存失败的具体原因)

GitHub链接:SJNetwork

里面附有demo

阅读全文 »

如何提高代码的可读性? -读《编写可读代码的艺术》

发表于 2017-11-13 | 分类于 BookNote
字数统计 10,363 字 | 阅读时长 37 分钟

《编写可读代码的艺术》封面

一. 为什么读这本书

很多同行在编写代码的时候往往只关注一些宏观上的主题:架构,设计模式,数据结构等等,却忽视了一些更细节上的点:比如变量如何命名与使用,控制流的设计,以及注释的写法等等。以上这些细节上的东西可以用代码的可读性来概括。

阅读全文 »
12…5
J_Knight_

J_Knight_

iOS开发,正在研究设计模式 | 下方的RSS已修复,欢迎订阅

61 日志
7 分类
17 标签
RSS
GitHub Weibo 掘金 简书
© 2019 J_Knight_
由 Hexo 强力驱动
主题 - NexT.Pisces