设计模式

设计模式的理念

设计模式是在软件设计上去解决普通问题的可重用的方法

单例模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

单例在整个程序的应用周期内有效。

可用于协调整个系统的统一行为。

使用的大概的场景:例如用忽的登录信息。

具体的代码的实现(这是一种比较好的方式还可以使用):

注意(static修饰的变量,是一个私有的全局变量)

static User *user;

+( instancetype ) sharedUser  {

    static  dispatch_once  onceToken;

    dispatch_once ( &onceToken, ^ {

    user = [ [ User alloc ] init ] ;

} );

   return sharedSingleton;

}

调用sharedUser方法时获取到的对象是相同的,但是当我们通过alloc和init来构造对象的时候,有时候得到的对象却是不一样的。创建对象的步骤分为申请内存(alloc)、初始化(init)这两个步骤,为了确保对象的唯一性,因此在alloc这个阶段我们就要拦截它。当我们调用alloc方法时,oc内部会调用allocWithZone这个方法来申请内存,我们重写这个方法确保对象的唯一性。拷贝对象也是同样的原理,覆写copyWithZone方法

static User *user;

+( instancetype ) sharedUser  {

    static  dispatch_once  onceToken;

    dispatch_once ( &onceToken, ^ {

    user = [ [ User alloc ] init ] ;

} );

   return user;

}


+(id) allocWithZone:(struct _NSZone *)zone {

  

static  dispatch_once  onceToken;

    dispatch_once ( &onceToken, ^ {

    user =  [ User  allocWithZone:zone ] ;

} );

   return user;

}


-(id)copy

{

    return user;

}


-(id)multableCopy

{

  return user;

}


工厂模式:

工厂方法也称为虚构造器,一个类无法预期需要生成哪个对象,想让其子类来指定所生成的对象。

代理设计模式:

为其它对象提供一种代理以控制对这个对象的访问。

观察者模式

定以对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并更新。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值