摘要:
计算数字的二进制形式中1的数量有许多不同的方法,variable precision SWAR算法是其中最快的。它通过若干位运算,将计算过程优化到常数时间。由于算法设计得非常简洁精巧,初看之下有些云里雾里,所以在这里记录下对算法的理解,方便日后查看。 阅读全文
摘要:
建造者模式(Builder Pattern)属于创建型模式中的一种,在创建比较复杂的对象,或者对象包含多个组成部分时比较有用,用于将对象的创建过程与使用分离,隔离具体的创建细节,方便以后的扩展。 阅读全文
摘要:
原型模式提供了从一个对象复制出新对象的能力,通过克隆自己产生新的实例,对外隐藏了创建的细节。当对象本身比较复杂,创建对象需要许多步骤时,原型模式就派上了用场。 阅读全文
摘要:
代理类似一个中间人的角色,出于某些原因,有时我们不能直接接触到真正的目标,只能通过中间人间接与目标交流,这时的中间人起到了限制其他角色访问目标的作用。代理提供了对目标的有限的访问接口,而屏蔽了其他的操作,从而起到保护目标的作用。 阅读全文
摘要:
状态模式关注对象的各种状态,当条件变化时,对象能够在各种状态之间相互转换,并且对于同一个操作,不同状态会有不同的表现。状态模式和策略模式有许多相同的地方,比如它们的类结构基本相同,都使用组合来增加灵活性等。 阅读全文
摘要:
组合模式允许用户将对象组合成树形结构来表现“整体/部分”的层次结构,从而能够以一致的方式处理单个对象以及对象组合。 阅读全文
摘要:
迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部实现。 阅读全文
摘要:
命令模式关注动作本身,通过将动作封装成对象实现调用者和底层实现相分离。调用者只需要简单的下达命令,然后等待命令完成即可,对底层发生了什么完全不知情。 阅读全文
摘要:
装饰者模式能够动态地将责任附加到对象上,在扩展对象功能方面比继承更加灵活。 阅读全文
摘要:
观察者模式允许多个观察者订阅同一个主题,当主题的状态发生变化时,能够将这种变化通知到每个观察者。 阅读全文