Jerry Lee

stay hungry,stay young.

Welcome to my world.


设计模式 单例模式



定义

单例模式确保某一个类只有一个实例,并提供一个访问它的全局访问点。

举例

单例模式下,对应类只能生成一个实例。就像一个王国只能有一个国王,一旦王国里的事物多起来,这唯一的国王也容易职责过重。

优点

1、提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它;

2、因为该类在系统内存中只存在一个对象,所以可以节约系统资源。

缺点

1、由于单例模式中没有抽象层,因此单例类很难进行扩展;

2、对于有垃圾回收系统的语言Java,C#来说,如果对象长时间不被利用,则可能会被回收。那么如果这个单例持有一些数据的话,在回收后重新实例化时就不复存在了。

##代码举例##

@implementation Singleton
+(instancetype)shareInstance{
static Singleton *shareInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    shareInstance = [[Singleton alloc]init];
});
return shareInstance;
}
@end
最近的文章

设计模式 生成器模式

定义也叫创建者模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示举例生成器模式将复杂的创建逻辑进行分割,例如生产汽车,分步骤创建安装不同的零件。如果创建逻辑简单则没有拆分的必要。优点1、客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象;2、每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者, 用户使用不同的具体建造者即可得到不同的产品对象;3、增加新...…

继续阅读
更早的文章

设计模式 抽象工厂模式

定义提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类,抽象工厂和工厂方法不同的地方在于,生产产品的工厂是抽象的。抽象工厂模式和工厂方法模式很相似,但是抽象工厂模式将抽象发挥的更加极致,是三种工厂模式中最抽象的一种设计模式。抽象工厂模式,也叫做Kit模式,提供了创建一系列相关抽象子类的接口,而无需指定它们具体的类型。抽象工厂模式中定义了抽象工厂类,抽象工厂类中定义了每个系列的抽象子类创建所需的方法,这些方法对应着不同类型的抽象子类实例化过程。每个工厂子类都对应着一个系列,工...…

继续阅读