https://github.com/human-centered-ai-lab/dat-kandinsky-patterns 抽象 康定斯基图形和康定斯基模式是数学上可描述的、简单的、独立的、因此可控的合成测试数据集
其实答案是 500,语句”innerFunction()”,正是使用了 Function Invocation Patterns 这种方式去调用一个方法,这个方法调用没有显式指定 “this”,那么如果你按照一些其它编程语言的思路去思考的话 obj()(); ————————————————– 思考——————————————————– 结果应该是 1(其实这道题只是一个简单的闭包使用而已,并没有 Function Invocation Patterns 最后一题,把典型的闭包和 Function Invocation Patterns 结合起来,你要毫无压力地挺住啊: var value = 500; var obj = function(){
You may have heard mocking is evil. Just like anything in software development it can be used evil, just like DRY(Don’t Repeat Yourself).
TDD Process Write a failing test and see it fail so we know we have written a relevant test for our requirements and seen that it produces an easy to understand description of the failure. Writing the smallest amount of code to make it pass so we know we
代理模式 为其他对象提供一种代理来控制对这个对象的访问. abstract class Subject { public abstract void Request(); } class RealSubject : Subject { public override void Request() { // todo } } class Proxy : Subject { RealSubject realSubject; public overrid
组合模式, 将对象组合成树形结构以表示”部分-整体”的层次结构. 组合模式使得用户对单个对象和组合对象的使用具有一致性.
外观模式, 为子系统中的一组接口提供一个一致的界面, 此模式定义了一个高层接口, 这个接口使得这一子系统更加容易使用.
动态的给一个对象添加一些额外的职责, 就增加功能来说, 装饰模式比生成子类更为灵活.
现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。
设计模式(Design Patterns) ——可复用面向对象软件的基础一般会用到的: Factory( 工厂模式) Singleton(单例模式) 这两个比较多 Proxy(代理模式) Adapter 23种通熟解释和简明教程: http://blog.csdn.net/langb2014/article/details/49616613 权威文档《图说设计模式》:http://design-patterns.readthedocs.io
在许多设计中,经常会出现一个对象直接请求另一个对象调用其方法以达到某种目的的行为,这里的两个类之间就会出现紧耦合。这很不好,所以我们应该将 方法的请求者 和 方法的实现者 分开。
原文链接:https://medium.com/androiddevelopers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54
These patterns gonna help you build an app that’s smooth, responsive, and uses as little battery as Patterns to avoid bad performance Avoid blocking main Thread Avoid unnecessary invalidations that may Consider Package Instead of Private Access with Private Inner Classes Use Native Methods Carefully Patterns to invalidate() Consider creating your own ViewGroup RecyclerView (replaces ListView and GridView) Patterns Only the keys are WeakReference Patterns for CPU Do not nest multi-pass layouts Lazily compute complex
状态模式, 当一个对象的内在状态改变时允许改变其行为, 这个对象看起来像是改变了其类.
命名模式, 将一个请求封装为一个对象, 从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志, 以及支持可撤销的操作.
面向对象的编程, 并不是类越多越好, 类的划分是为了封装, 但分类的基础是抽象, 具有相同属性和功能的对象的抽象集合才是类.
本文首发于知乎,各位可以通过点击文章下方的阅读原来来访问原文地址 大概十天前,在 GitHub Trending 上看到一本 React 开源书 《React in patterns》 ,随便翻了翻, 图书链接地址 https://github.com/SangKa/react-in-patterns-cn 简介 本书的目标读者是对 React 是什么以及如何使用 React 有基础了解的开发者。
子类型必须能够替换掉他们的父类型. 即一个软件实体如果使用的是一个父类的话, 那么一定适用于其子类, 而且它察觉不出父类对象和子类对象的区别. 也就是说, 在软件里面, 把父类都替换成他的子类, 程序的行为没有变化.
对象的继承关系是在编译时就定义好了, 所以无法在运行时改变从父类继承的实现, 子类的实现与他的父类有非常紧密的依赖关系, 以至于父类实现中的任何变化必然会导致子类发生变化. 当你需要复用子类时, 如果继承下来的实现不适合解决新的问题, 则父类必须重写或被其他更适合的类替换. 这种依赖关系限制了灵活性并最终限制了服用性.
在享元对象内部并且不会随环境变化而改变的共享部分, 可以称为是享元对象的内部状态, 而随环境改变的改变的, 不可以共享的状态就是外部状态了. 享元模式可以避免大量非常相似类的开销. 在程序设计中, 有时需要生成大量细粒度的类实例来表示数据. 如果能发现这些实例除了几个参数外基本上都是相同的, 有时就能够大幅度的减少需要实例化的类的数量. 如果能把那些参数移到类实例的外面, 在方法调用时将他们传递进来, 就可以通过共享大幅度的减少单例的数目.