Jneth Jneth的技术博客

iOS中的设计模式常识(适配器、策略、工厂)

2017-07-02
iOS

一、适配器模式

适配器模式简单来说就是让你的代码根据不同的情况发生相对应的变化(适配)

🌰:在控制器中关联VIew与Model,当这个视图的Model对象有多个的时候,在View中无法对这些Model进行一一的处理,这时候就需要建立个“适配器”的类

1.建立protocol,protocol中定义接口,用于返回适配后的数据对象

2.建立适配器类,适配器类中实现protocol的接口,可以先类似作为抽象类只返回nil

3.建立适配器子类,子类中实现同适配器类的方法,但这时候根据具体传入的Model对象类型,进行适配,返回对应的处理结果。

4.在View中创建一个加载数据的方法,传入类型为id<适配协议>,在方法中为子视图赋值

5.在controller中创建需要的Model对象数据,利用堕胎的思想创建适配器,然后通过适配器类通用的方法将数据传递给View

二、策略模式

定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化

🌰:有两个输入框,一个为输入电话号码,一个为输入邮件,需要在textField代理方法中对输入值进行验证,这时候同样利用多态的方式,建立策略类进行验证

1.创建策略抽象类,类中验证方法的正确性,输入为textField,包含一个属性errorMessage,用于提示。

2.在自定义的textField中,导入抽象类并创建一个该对象和一个自定义的验证方法,方法中获取抽象类中的errorMessage中,若为nil则为输入正确。

3.具体的策略实现,在于创建对应的策略子类,实现抽象类中的验证方法返回errorMessage。

4.在controller中创建textField并,初始化子类策略对象给testField中抽象策略类赋值

5.这样实现的时候只需要利用,调用textField的统一验证方法就行了。

三、工厂模式

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行

🌰:有两个工厂苹果工厂和谷歌工厂,生产不同的手机和手表,在用户需要切换手机和手表的时候只需要切换工厂就行了,实际的工厂内部生产流程则不去关心。

1.创建一个工厂管理类,定义一个接口用于返回工厂,传入值为工厂枚举值,并根据枚举值去实现这个接口返回对应的工厂。

2.创建一个抽象工厂类,分别定义生产手机和手表的接口

3.创建两个具体工厂分别为苹果和谷歌,并各自实现生产手机和手表的接口,返回基类的手机和手表的子类创建

4.创建抽象手机基类和手表基类,以及两种手机,两种手表子类。

5.在controller中根据工厂管理类中传入工厂枚举创建工厂,然后工厂调用生产方法即可完成对应产品的生产。


Similar Posts

Comments