Zhang's Wikipedia

玩就玩大的

迭代器模式在 Java 容器中的实现

迭代器接口是迭代器模式实现的精髓: public interface Iterator<E> { boolean hasNext(); E next(); ... } 假设某容器...

2018-02-03 00:08:18

阅读数:146

评论数:0

特例模式(Special Case Pattern)与空对象模式(Null Pointer Pattern)—— 返回特例对象而非 null

返回 null 值,基本上是在给自己增加工作量,也是给调用者添乱。只有一处没有检查返回的是否为 null,程序就会抛 NullPointerException 异常。 如果你打算在方法中返回 null 值,不如: 抛出异常,或者返回特例对象。 如果你在调用某个第三方 api 中可能返回 nu...

2018-01-29 22:53:37

阅读数:400

评论数:0

设计模式在各编程语言类库及框架上的应用

1. 组合(composite)模式 JUnit 2. 装饰器(decorator)模式 Java I/O 系统; 3. 适配器(Adapter)模式 STL 中的 queue 和 stack queue 以及 stack 都通过在底层维护一个 deque(双端队列),限制其输入输出顺序而成就各...

2017-08-23 22:29:23

阅读数:224

评论数:0

【线程安全】—— 单例类双重检查加锁(double-checked locking)

1. 三个版本单例类的实现 版本1:经典版public class Singleton { public static Singleton getInstance() { if (instance == null) { instance = new ...

2017-08-02 16:43:30

阅读数:466

评论数:0

Head First 设计模式 —— 单例模式(Singleton)

1. 如何保证一个类只有一个实例,且这个实例易于被访问? lazy evaluation:在用到的时候才创建对象。全局变量: 使得一个对象可以被访问,全局访问点; 但不能防止实例化多个对象; 如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好对象。但是,如果这个对象非常耗费资源,而程...

2017-08-02 12:08:33

阅读数:196

评论数:0

Head First 设计模式 —— 策略设计模式

创建一个能够根据所传递的参数对象的不同而具有不同行为(动态绑定的多态机制)的方法,被称为策略设计模式。

2017-07-28 11:58:00

阅读数:218

评论数:0

设计原则 —— 针对接口编程而不针对实现编程

1. 针对接口编程是多态性的体现 针对对象编程简单地说,就是传递的是具体的子类; 而针对接口编程,传递的则是父类引用,这样便可发挥多态性“父类引用指向子类对象”的特点和优势; 来看一个简答的例子:public interface Animal { ... public void ...

2017-07-24 11:42:20

阅读数:1165

评论数:1

Head First 设计模式 —— 工厂模式与工厂方法

1. 实例化对象的方法制造对象的方法不只 new 操作符一种。且实例化这个动作不应该总是公开地进行,还有初始化常常造成耦合问题。由此提出的工厂模式以进一步封装实例化的活动,且避免对象初始化时的可能产生的耦合问题。

2017-07-24 11:07:33

阅读数:188

评论数:0

Head First 设计模式 —— 装饰器模式与门面模式

1. 装饰器模式与继承 与装饰器模式相比,继承更容易造成类爆炸; 装饰器模式:利用组合取代继承;

2017-07-24 11:01:50

阅读数:232

评论数:0

Python 进阶 —— 装饰器函数的使用

(1)obj.__len__ ⇒ len(obj) (2)__contains__ ⇒ for … in …

2016-05-18 18:00:35

阅读数:378

评论数:0

C++ 设计模式 —— 控制器设计模式(实现功能模块间通信)

在构建更复杂的程序时,你需要创建多个算法来协同工作,以实现一些高级功能。更合理地构建程序并让所有的类能互相通信,程序将会变得越来越复杂。因此一个类中(即为控制器类)集中对程序进行控制,是十分有益的。这正是控制器背后的思想。控制器(Controller)是一个特殊的对象,充当着程序中心的角色。

2016-04-16 15:06:48

阅读数:1633

评论数:0

C++ 设计模式 —— 访问者(Visitor)

访问者设计模式的实现借助于两个继承体系, (1)elements:一个是被操作的类(基类及其子类) (2)visitors:一个定义了一系列操作的访问者(基类及其子类) 访问者模式是一种行为型设计模式(behavioral design pattern),被用于为一个树形结构(Node、LeafN...

2016-03-28 21:46:56

阅读数:1520

评论数:0

C++ 设计模式 —— 策略模式(Strategy)

策略模式是一种行为型设计模式(behavioral pattern),用于将不同的算法(算法之间的关系是平行的,也即,它们可以解决相同的问题,只不过采取了不同的策略,比如用于聚类的 Kmeans,FCM之间)封装在不同的类中,也即策略模式用于组织解决同一问题不同算法,以方便客户端(也即是下文的 C...

2016-03-28 20:48:52

阅读数:910

评论数:0

C++设计模式——模板方法(Template Method)

模板方法(template method)设计模式用于定义一个包含许多步骤的算法框架,允许子类重写(覆盖)算法的某一个步骤而不改变算法整体的流程和框架。例如一个算法(如聚类算法)可能包含初始化(initialization)、迭代(iteration)以及后处理(post-preprocessin...

2016-03-17 16:02:13

阅读数:1035

评论数:0

C++设计模式——Composite 组合模式

Composite objects into a tree structure so that individual objects and compositions of objects can be treated uniformly. 组合模式用于将对象(s)组合成一个树形结构,来表示部分-...

2016-03-13 17:43:18

阅读数:896

评论数:0

utilities(C++)——单例(Singleton) (使用智能指针 shared_ptr)

utilities(C++)——单例(Singleton) 上文简单版的单例类的实现的一大核心问题,在于new出来的堆对象不会被释放,就有可能造成内存泄漏的风险。class Singleton { public: // 通过类名获得类实例指针 static Singleton* i...

2016-03-13 16:16:22

阅读数:3153

评论数:0

utilities(C++)——单例(Singleton)

通过类名获得类实例指针 禁止拷贝 将构造函数声明为私有的

2016-03-13 15:54:48

阅读数:690

评论数:0

C++设计模式——从多态到观察者模式到MVC架构

我们先从宏观整体上把握MVC的架构与流程:

2015-11-28 15:35:10

阅读数:1496

评论数:0

C++设计模式::装饰模式or代理模式or面向切片编程(AOP)

一个实例 装饰模式:动态地给一个对象(而非一个类)添加一些额外的职责。就增加功能来说,装饰模式比创建子类更加灵活,因为有时我们的需求是给某个对象而不是整个类添加一些功能,比如为一部手机添加增加挂件、屏幕贴膜等等特性,一种比较灵活的方式,将手机(被装饰器类)嵌入到另一个对象(装饰器类)中(两者...

2015-11-20 21:16:03

阅读数:1784

评论数:2

设计模式C++实现——工厂模式

工厂模式属于创建型模式,主要可分为三类,简单工厂、工厂方法、抽象工厂。工厂模式规定,无论是工厂函数,工厂类的成员函数,返回的对象都必须位于heap。 有两点需要特别注意: 堆对象三种工厂模式都属于创建型模型,所创建的对象都位于堆内存中,需要手动释放其所占内存。 UML类图UML类图是把握设计模式的...

2015-11-08 10:40:00

阅读数:696

评论数:0

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