单例应用

作者: J_coco | 来源:发表于2016-01-21 17:05 被阅读0次

创建 类 :Setting、 ImageView、 VideoView、 Singleton、

Setting.h

#import <Foundation/Foundation.h>
@interface Setting : NSObject

@property (nonatomic,assign)BOOL isWIFI;
@property (nonatomic,copy)NSString *username;

+ (Setting *)shareInstance;

@end

Setting.m

#import"Setting.h"
@implementation Setting
static Setting *instance = nil;
+ (Setting *)shareInstance
{
  if(instance == nil)
  {  
    instance = [[Setting alloc]init];
  }
  return instance;
}

@end

Singleton.h

#import <Foundation/Foundation.h>
@interface Singleton : NSObject

+ (Singleton *)shareInstace;

@end

Singleton.m

#import "Singleton.h"
@implementation Singleton

static Singleton *instance = nil;
+ (Singleton *)shareInstace
{
  if (instance == nil)
  {
    //只会执行一次
    instance = [[Singleton alloc]init];
  }

  return instance;
}

@end

VideoView.h

#import <Foundation/Foundation.h>
@interface VideoView : NSObject

//@property (nonatomic,assign)BOOL isWIFI;
- (void)playVideo;

@end

VideoView.m

#import "VideoView.h"
#import "Setting.h"
@implementation VideoView

- (void)playVideo
{
  NSLog(@"当前用户为%@",[Setting shareInstance].username);
  Setting *setting = [Setting shareIstance];
  NSLog(@"setting ---> %@",setting);
  if(setting.isWIFI)
  {
    NSLog(@"wifi环境 直接播放视频");
  }
  else
  {
    NSLog(@"提示用户当前环境为流量是否继续?");
  }
}

@end

ImageView.h

#import <Foundation/Foundation.h>
@interface ImageView : NSObject

//@property (nonatomic,assign)BOOL isWIFI;
- (void)loadImage;

@end

ImageView.m

#import "ImageView.h"
#import "Setting.h"
@implementation ImageView

- (void)loadImage
{
  NSLog(@"当前用户为%@",[Setting shareIntance].username);
  if ([Setting shareInstance].isWIFI)
  {
    NSLog(@"查看高清图片");
  }
  else
  {
    NSLog(@"加载缩略图片");
  }
}

@end

main.m

#import <Foundation/Foundation.h>
#import "Singleton.h"
#import "VideoView.h"
#import "ImageView.h"
#import "Setting.h"

void function()
{
  /*
      static: 静态声明 -> count 只创建一次
      看一下Count变量是否已经创建了,如果创建了直接拿过来用,如果没则创建
  */
  static int count = 0;
  printf("function 函数 %d\n",count);
  count++;
}

//模拟另一个文件
void videoFunc()
{
  VideoView *vv = [[VideoView alloc]init];
  [vv playVideo];
}
/*____________________________________________________________________*/


int main (int argc, const char *argv[])
{
  @autoreleasepool
  {
    Setting *setting = [Setting shareInstance];
    NSLog(@"%@",setting);
    setting.isWIFI = YES;
    setting.username = @"aaaaa";


    //要求:imageview和videoview isWIFI属性 都要从setting 中获取
    videoFunc();
    ImageView *iv = [[ImageView alloc]init];
    [iv loadIma]
  }
  return 0;
}

相关文章

  • Android中的设计模式—单例模式

    单例模式介绍 单例模式是应用最广的模式之一,也可能是很多人唯一会使用的设计模式。在应用单例模式时,单例对象的类必须...

  • 单例应用

    创建 类 :Setting、 ImageView、 VideoView、 Singleton、 Setting.h...

  • OC底层原理24、GCD 的应用

    一、GCD的应用与应用原理 1、单例 - dispatch_once_f() 单例代码块: 源码搜索: 1.1、找...

  • 单例模式

    3、单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象...

  • 学而时习之单例模式

    本文主要说明单例模式的概念,应用,以及C++实现。 I、上帝视角看单例模式 1.1 单例模式特点 单例模式需要满足...

  • 单例(饿汉、懒汉、静态内部类、枚举)

    什么是单例   所谓单例,指的就是单实例,有且仅有一个类实例。 应用场景   常应用于不能存在多个实例的场景中。例...

  • 设计模式-单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保...

  • 单例模式

    目录 1、设计模式简介 2、什么是单例模式 3、单例模式应用场合 4、单例模式作用 5、单例模式3个要点/要素 6...

  • 单例模式

    单例模式介绍 单例模式是应用最广的模式之一,在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系...

  • 设计模式分析——(Singleton Pattern)

    单例模式介绍: 单例模式是应用最广的模式之一,也是初级程序员唯一会的设计模式。在应用这个模式时,单例对象必须保证唯...

网友评论

    本文标题:单例应用

    本文链接:https://www.haomeiwen.com/subject/wablkttx.html