威尼斯wns.9778官网活动_vnsc威尼斯城官网

热门关键词: 威尼斯wns.9778官网活动,vnsc威尼斯城官网
当前位置:威尼斯wns.9778官网活动 > 计算机教程 > iOS开发中的几种设计模式

iOS开发中的几种设计模式

文章作者:计算机教程 上传时间:2019-08-16

简单工厂设计模式详解

简单工厂设计模式详解 基本概念 结构图 经典的示例 示例代码 优点 缺点 使用条件


威尼斯wns.9778官网活动,基本概念

“专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。”
世界上就是由一个工厂类,根据传入的参数,动态地决定创建出哪一个产品类的实例。

一句话总结:传入对象实现对象的功能

缺点

工程类集中了所有产品的逻辑,一旦不能正常工作,整个系统受影响,当分类较多时,所有创建工作都在工厂方法中实现,后期扩展较为发杂

敏捷原则:接口隔离原则;多用组合,少用继承;针对接口编程,而非实现。

经典的示例

最经典的示例就是运算类,加、减、乘、除四个运算符都继承自父类Operation,有两个属性和一个操作方法,这些加减乘除的对象并不是直接在ViewController中创建,而是根据输入操作符,由简单工厂OperationFactory来创建。
威尼斯wns.9778官网活动 1

(六)工厂

优点

简单工厂方法从代码中消除了对应用程序特有类的耦合,调用者不必关心具体实现,取消了常建者的责任,实现了对责任的分割

目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM

示例代码

(1)创建一个协议OprationProtocol,由父类Operation来遵从该协议

/*
 *  操作方法协议接口
 */
@protocol OperationProtocol 
-(double)getResult;
@end

(2)定义加减乘除操作的父类Operation

#import OperationProtocol.h
/*
 *  操作方法父类
 */
@interface Operation : NSObject
@property double firstNum;//第一个操作数
@property double secondNum;//第二个操作数 
@end

(3)加减乘除实现类,此处以”加”举例说明

//OperationAdd.h文件
#import Operation.h
/*
 *  加法实现类
 */
@interface OperationAdd : Operation
@end

//OperationAdd.m文件
#import "OperationAdd.h"
@implementation OperationAdd
-(double)getResult
{
    double result = 0;
    result = self.firstNum self.secondNum;//" "是OperationAdd时候使用," -*/"分别对应"加减乘除"
    return result;
}
@end

(4)简单工厂类的代码

//OpeartionFactory.h file
#import Operation.h
#import OperationAdd.h
#import OperationSub.h
#import OperationMultiply.h
#import OperationDivide.h
/*
 *  操作工厂类
 */
@interface OperationFactory : NSObject

//获得操作对象
 (Operation*)createOperate:(NSString*)operateStr;

@end

//OpeartionFactory.m file
#import "OperationFactory.h"
@implementation OperationFactory

 (Operation*)createOperate:(NSString*)operateStr
{
    Operation* oper = nil;
    //根据不同的操作符,创建不同的操作对象," -*/"分别对应"加减乘除"
    if ([operateStr isEqualToString:@" "]) {
        oper = [[OperationAdd alloc] init];
    }else if ([operateStr isEqualToString:@"-"]){
        oper = [[OperationSub alloc] init];
    }else if ([operateStr isEqualToString:@"*"]){
        oper = [[OperationMultiply alloc] init];
    }else if ([operateStr isEqualToString:@"/"]){
        oper = [[OperationDivide alloc] init];
    }
    return oper;
}
@end

(5)客户端代码,在ViewController中使用OperationFactory

 NSString* strFirstNum = self.firstNumTextField.text;
    NSString* strSecondNum = self.secondNumTextField.text;
    Operation* oper;
    oper = [OperationFactory createOperate:self.operationTextField.text];
    oper.firstNum = [strFirstNum doubleValue];
    oper.secondNum = [strSecondNum doubleValue];
    self.resultTextField.text = [NSString stringWithFormat:@%f,[oper getResult]];

通过简单工厂模式的重构,我们就是闲了低耦合度的代码结构,做到了对外扩展开放,对修改关闭。如果再增加任何的操作方法,只需要继承操作方法父类,新建一个操作子类,并且在简单工厂类里面多添加一个else if的判断即可。

敏捷原则:接口隔离原则,开放-封闭原则

iOS常用设计模式——简单工厂设计模式

分享:http://my.oschina.net/leejan97/blog/311843

结构图

威尼斯wns.9778官网活动 2

ConcreteProduct1和ConcreteProduct2两个产品具有一个共同的父类IProject,简单工厂类为SimpleFactory,负责根据传入的不同参数来决定生产ConcreteProduct1还是ConcreteProduct2产品。

优势:易于替换,面向抽象编程,application只与抽象工厂和易变类的共性抽象类发生调用关系。

使用条件

(1)工厂类负责创建的对象较少时;

(2)客户端只知道传入工厂类的参数,对于如何创建对象的逻辑不必关心时。

http://www.bkjia.com/IOSjc/978457.htmlwww.bkjia.comtruehttp://www.bkjia.com/IOSjc/978457.htmlTechArticleiOS常用设计模式——简单工厂设计模式 简单工厂设计模式详解 简单工厂设计模式详解 基本概念 结构图 经典的示例 示例代码 优点 缺点 使...

威尼斯wns.9778官网活动 3

object c中,重写allocWithZone方法,保证即使用户用 alloc方法直接创建单例类的实例,

注意事项:1,剥离类中易于变化的行为,通过组合的方式嵌入抽象基类

实例:Notification通知中心,注册通知中心,任何位置可以发送消息,注册观察者的对象可以接收。

场景:定义算法族,封装起来,使他们之间可以相互替换。

优势:使系统,层次清晰,职责分明,易于维护

实例:排序算法,NSArray的sortedArrayUsingSelector;经典的鸭子会叫,会飞案例。

         缺点:是工厂类几种了所有产品的创建逻辑,一旦不能正常工作,整个系统都会受到影响,而且当产品类多结构复杂的时候,把所有创建工作放进一个工厂中来,回事后期程序的扩展较为困难。

敏捷原则:对扩展开放-对修改封闭

2,变化的行为抽象基类为,所有可变变化的父类

场景:工厂方式创建类的实例,多与proxy模式配合,创建可替换代理类。



(一)代理 

(四)单例

(五)策略

http://my.oschina.net/leejan97/blog/311843

MVVM-----ViewModel: 它位于 View/Controller 与 Model 之间.

(三)MVC

为了不让控制器日益增大,便于测试管理,便出现了MVVM.

         优点:简单工厂模式的优点是客户端可以直接消费产品,而不必关心具体产品的实现,消除了客户端直接创建产品对象的责任,实现了对责任的分割。

(2)客户端只知道传入工厂类的参数,对于如何创建对象的逻辑不必关心时。

ConcreteProduct1和ConcreteProduct2两个产品具有一个共同的父类IProject,简单工厂类为SimpleFactory,负责根据传入的不同参数来决定生产ConcreteProduct1还是ConcreteProduct2产品。

场景:是一中非常古老的设计模式,通过数据模型,控制器逻辑,视图展示将应用程序进行逻辑划分。

威尼斯wns.9778官网活动 4

自定义的delegate

(二)观察者

简要分析结构图:

MVC

注意事项:项目初期,软件结构和需求都没有稳定下来时,不建议使用此模式,因为其劣势也很明显,

本文由威尼斯wns.9778官网活动发布于计算机教程,转载请注明出处:iOS开发中的几种设计模式

关键词: