美文网首页程序员
iOS 设计模式(一)

iOS 设计模式(一)

作者: 星辰流转轮回 | 来源:发表于2018-06-23 16:14 被阅读32次

    1. 工厂模式

    1.1  简单工厂模式

    创建同一系列的产品,由工厂内部根据所传参数决定创建的具体产品类型.

    如,写一个创建水果的工厂

    + (Fruits *)fruitsFactory:(FruitsType)type;

    工厂内根据所传水果类型 type 来创建不同的水果类

    - (Fruits *)fruitsFactory:(FruitsType)type

    {

        // 创建空的对象.在工厂方法里面进行水果的制造

        Fruits*fruits =nil;

        switch(type) {

            case Apple:

                fruits = [[Apple alloc]init];

                break;

            case Orange:

                fruits = [[Orange alloc]init];

                break;

            case Banana:

                fruits = [[Banana alloc]init];

            default:

                break;

        }

        return fruits;

    }

    1.2 抽象工厂

    简单工厂中,代码逻辑都是在工厂类中处理,耦合度太高,扩展性也低.因此,可以把共同的抽取出来做一个基类,不同的分别实现.

    如,做三个 view 分别是红黄蓝 都设为半透明

    写一个基类

    @interfaceViewFactory :UIView

    + (ViewFactory *)createView;

    - (void)changeView;

    @end

    @implementation ViewFactory

    + (ViewFactory *)createView

    {

        return nil;

    }

    - (void)changeView

    {

        self.alpha=.5f;

    }

    @end

    然后三个继承基类的分别在 .m 中实现

    @implementation RedViewFactory

    + (ViewFactory*)createView

    {

        ViewFactory * redView = [ViewFactory new];

        redView.backgroundColor = [UIColor redColor];

        returnredView;

    }

    @end

    @implementation YellowViewFactory

    + (ViewFactory*)createView

    {

        ViewFactory* yellowView = [ViewFactory new];

        yellowView.backgroundColor = [UIColor yellowColor];

        return yellowView;

    }

    @end

    @implementation BlueViewFactory

    + (ViewFactory*)createView

    {

        ViewFactory * blueView = [ViewFactory new];

        blueView.backgroundColor = [UIColor blueColor];

        return blueView;

    }

    @end

    调用时,可以

        ViewFactory * redView = [RedViewFactory createView];

        redView.frame=CGRectMake(50.f,100.f,self.view.frame.size.width-100.f,50.f);

        [redView changeView];

        [self.view addSubview:redView];

    demo 链接

    2. 外观模式

    封装,隐藏实现细节.简化流程,解耦,简化操作逻辑。

    适用场景:

    复杂的子系统,改进使用操作类来操作子系统,通过使用操作类来启用子系统功能.

    不关心逻辑,只要结果.

    例:老板要采购员去买进电脑,只需要负责给采购员多少钱,而不需要知道哪个型号的电脑买多少台,如何来搭配. 采购员自己根据情况来选择 戴尔 联想 惠普的个买多少台

    demo 链接

    3. 责任链模式

    个人理解的,就类似于公司中打太极,互相推脱责任

    主要是用于发送者和接收者之间解耦,发送者只要把消息发送出去,等会回复即可

    例:发现一个bug,问张三,张三去找李四;问李四,李四去找王五;问王五,王五去找六...

    demo 链接

    相关文章

      网友评论

        本文标题:iOS 设计模式(一)

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