设计模式研读-2

推荐书籍:《研磨设计模式》

适配器模式

例子:旧硬盘可以直接和电源线相连,而新硬盘需要转接线才能。这就是适配器。数据库第一版和第二版接口不一致,需要用适配器。

定义

将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

应用适配器模式来解决问题的思路

问题的根源在于第一版和第二版接口的不兼容,功能是基本实现了的,也就是说,只要想办法让两边的接口匹配起来,就可以复用第一版的功能了。

按照适配器模式的实现方式,可以定义一个类来实现第二版的接口,然后在内部实现的时候,转调第一版已经实现了的功能,这样就可以通过对象组合的方式,既复用了第一版已有的功能,同时又在接口上满足了第二版调用的要求。

优点

复用性好,扩展性好。

缺点

过多使用容易混乱。

单例模式

例子:读配置文件只需要创建一个实例就可以到处使用。

懒汉式

需要的时候(getInstance的时候发现没有)再创建。加锁可以实现线程安全。加锁可以分为在整个函数上面加锁和二重检查加锁。时间换空间。

image-20210425194953297

饿汉式

用static实现,类装载的时候就初始化。Python的话因为没有静态变量,所以可以用装饰器实现。空间换时间。

># Python实现static
>@static_vars(counter = 0)
>def foo():
   foo.counter += 1

扩展

单例->2例,3例。

用Map控制缓存。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!