摘要:
运行时的消息转发 https://www.cnblogs.com/feng9exe/p/10945712.html 其实在 objc-msg-x86_64.s 中包含了多个版本的 objc_msgSend 方法,它们是根据返回值的类型和调用者的类型分别处理的: objc_msgSendSuper:向 阅读全文
摘要:
React (a.k.a. ReactJS or React.js) is a JavaScript library for creating user interfaces, open sourced to the world by Facebook and Instagram team in 2 阅读全文
摘要:
编程的过程看成计算的构建 阅读全文
摘要:
依赖倒置的层(高层模块不应依赖于低层模块,二者应依赖于抽象)-高层表示策略层。 低层:细节、实现; 依赖于控制方向 控制方向:(IO)事件循环是控制逻辑的根 高层:策略层、掌握更多上下文、更接近用户目的、应用层、聚合低层能力以达到目的 低层:为高层提供基础能力、技术工具层;低层提供技术和工具。 阅读全文
摘要:
写在最前 文章标题谈到了面向协议编程(下文简称 POP),是因为前几天阅读了一篇讲 Swift 中 POP 的文章。本文会以此为出发点,聊聊相关的概念,比如接口、mixin、组合模式、多继承等,同时也会借助各种语言中的例子来阐述我的思想。 那些老生常谈的概念,相信每位读者都耳熟能详了,我当然不会无聊 阅读全文
摘要:
在继承、组合外添加了新的功能添加(组合)方式 Protocols can have default implementations for requirements specified in a protocol extension, allowing “mixin” or “trait” like 阅读全文
摘要:
正如牛顿三大定律在经典力学中的位置一样,“开-闭”原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的基石。其他设计原则(里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则)是实现“开-闭”原则的手段 阅读全文
摘要:
除了函数(指针)、变量、引用上下文(具有动态作用域和生命周期),闭包最大的贡献在于逻辑内聚 将使用函数指针时分散到各处的关联逻辑放到一起 阅读全文
摘要:
编程范式是人类思维方式的投影-代表了程序设计者认为程序应该如何被构建和执行的看法 阅读全文
摘要:
抽象的规则是稳定,分解的规则是独立 什么是抽象呢?首先不必澄清什么是抽象,而从什么算抽象说起,稳定的、高层的就代表了抽象。就像一个公司,最好保证了高层的稳定,才能保证全局的发展。在进行系统设计时,稳定的抽象接口和高层逻辑,也代表了整个系统的稳定与柔性。兵熊熊一窝,将良良一窝,软件的构建也正如打仗,良 阅读全文
摘要:
面向对象通过构建更大的结构来模拟世界,函数式编程通过构造更大的计算来求解问题 那我认为的编程语言两个功能, 一个是模拟, 一个是计算,真实的物理世界, 或者说具体的业务, 有巨大的复杂性,当你要用编程语言解决问题, 首先语言应该有足够的灵活性去描述问题,然后是计算, 比说你能描述字符串文件, 也能描 阅读全文
摘要:
框架是程序信息流的主干道 阅读全文
摘要:
对象分为主动对象和被动对象,主动对象内部包含一个线程,可以自动完成动作或改变状态,而一般的被动对象只能通过被其他对象调用才有所作为。在多线程程序中,经常把一个线程封装到主动对象里面。 Active Object 设计模式的本质是解耦合方法的调用 (Method invocation) 与方法的执行 阅读全文
摘要:
Java 采用的是管程技术,synchronized 关键字及 wait()、notify()、notifyAll() 这三个方法都是管程的组成部分。而管程和信号量是等价的,所谓等价指的是用管程能够实现信号量,也能用信号量实现管程。但是管程利用OOP的封装特性解决了信号量在工程实践上的复杂性问题,因 阅读全文
摘要:
元编程:面向元类型(反射)、元信息(注解)和模版类型的编程 阅读全文
摘要:
多态这个概念在c++和java这种强类型语言中比较强调,js,python这种弱类型语言天生支持多态。 意味着强类型语言的多态是和继承结合在一起的,多态的前提是继承。 在js和python这种弱类型语言中,多态是天生的。在Python和js中关注的不是传入对象是否是xx的子类,而是传入的对象是否有这 阅读全文