iOS 设计模式之抽象工厂
设计模式是程序提升的必备知识,这里说下iOS怎样实现抽象工厂设计模式。本文是看过oc编程之道这本的抽象工厂这章后写出的,假设不明确原理能够看看那本书。
TestView.h首先创建一个视图
//
// TestView.h
// AbstractFactory
//
// Created by 杜甲 on 11/10/14.
// Copyright (c) 2014 杜甲. All rights reserved.
// #import <UIKit/UIKit.h> @interface TestView : UIView @end
TestView.m
//
// TestView.m
// AbstractFactory
//
// Created by 杜甲 on 11/10/14.
// Copyright (c) 2014 杜甲. All rights reserved.
// #import "TestView.h" @implementation TestView - (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
self.backgroundColor = [UIColor redColor]; }
return self;
} @end
接下来创建两个类TestFactory、TestBrandingFactory 当中TestFactory继承TestBrandingFactory。详细实现例如以下:
TestBrandingFactory.h
//
// TestBrandingFactory.h
// AbstractFactory
//
// Created by 杜甲 on 11/10/14.
// Copyright (c) 2014 杜甲. All rights reserved.
// #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> @interface TestBrandingFactory : NSObject + (TestBrandingFactory *)factory; - (UIView *)createTestView:(CGRect)frame; @end
TestBrandingFactory.m
//
// TestBrandingFactory.m
// AbstractFactory
//
// Created by 杜甲 on 11/10/14.
// Copyright (c) 2014 杜甲. All rights reserved.
// #import "TestBrandingFactory.h"
#import "TestFactory.h" @implementation TestBrandingFactory + (TestBrandingFactory *) factory
{
return [[TestFactory alloc] init];
} - (UIView *) createTestView:(CGRect)frame
{
return nil;
} @end
TestFactory.h
//
// TestFactory.h
// AbstractFactory
//
// Created by 杜甲 on 11/10/14.
// Copyright (c) 2014 杜甲. All rights reserved.
// #import "TestBrandingFactory.h" @interface TestFactory : TestBrandingFactory @end
TestFactory.m
//
// TestFactory.m
// AbstractFactory
//
// Created by 杜甲 on 11/10/14.
// Copyright (c) 2014 杜甲. All rights reserved.
// #import "TestFactory.h"
#import "TestView.h" @implementation TestFactory - (UIView *)createTestView:(CGRect)frame
{
return [[TestView alloc] initWithFrame:frame];
} @end
最后贴出实现
TestBrandingFactory * tmp = [TestBrandingFactory factory];
UIView *v = [tmp createTestView:CGRectMake(50, 110, 100, 50)];
[self.view addSubview:v];
iOS 设计模式之抽象工厂的更多相关文章
- iOS设计模式 - (3)简单工厂模式
iOS设计模式 - (3)简单工厂模式 by Colin丶 转载请注明出处: http://blog.csdn.net/hitwhylz/article/ ...
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factor ...
- 桥接模式及C++实现 C++设计模式-AbstractFactory抽象工厂模式
桥接模式及C++实现 桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一 ...
- Java 设计模式之抽象工厂模式(三)
原文地址:Java 设计模式之抽象工厂模式(三) 博客地址:http://www.extlight.com 一.前言 上篇文章 <Java 设计模式之工厂模式(二)>,介绍了简单工厂模式和 ...
- java设计模式之抽象工厂模式
上一篇文章(http://www.cnblogs.com/liaoweipeng/p/5768197.html)讲了简单工厂模式,但是简单工厂模式存在一定的问题,如果想要拓展程序,必须对工厂类进行修改 ...
- php设计模式之抽象工厂模式
之前总结了一下工厂模式,其实准确地说是简单 工厂模式,在它的基础上再进行抽象就可以得到一种新的模式:抽象工厂模式. 专业一点的定义为: 抽象工厂模式(Abstact Factory)是一种常见的软件设 ...
- PHP设计模式:抽象工厂
示例代码详见https://github.com/52fhy/design_patterns 抽象工厂 抽象工厂(Abstract Factory)是应对产品族概念的.比如说,每个汽车公司可能要同时生 ...
- 再起航,我的学习笔记之JavaScript设计模式06(抽象工厂模式)
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前两 ...
- C#设计模式(4)-抽象工厂模式
引言 上一篇介绍了设计模式中的简单工厂模式-C#设计模式(3)-工厂方法模式,本篇将介绍抽象工厂模式: 抽象工厂模式简介 抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依 ...
随机推荐
- Eclipse安装配置PyDev插件
Eclipse安装配置PyDev插件 关于PyDev PyDev是一个功能强大的 Eclipse插件,使用户可用 Eclipse 来进行 Python 应用程序的开发和调试.PyDev 插件的出现方便 ...
- C.xml
pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6; ...
- ISO-8859-1
ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号 ...
- git 操作大全
Git 以下内容整理自廖雪峰的git教程,主要用于个人方便使用git命令 git忽略已经被纳入版本库的文件 使用 git update-index –-skip-worktree [file] 可以实 ...
- 【LeetCode】190 & 191 - Reverse Bits & Number of 1 Bits
190 - Reverse Bits Reverse bits of a given 32 bits unsigned integer. For example, given input 432615 ...
- STL map详细用法和make_pair函数
今天练习华为上机测试题,遇到了map的用法,看来博客http://blog.csdn.net/sprintfwater/article/details/8765034:感觉很详细,博主的其他内容也值得 ...
- with 语句
with 语句用于设置代码在特定对象中的作用域. 它的语法: with (expression) statement例如: var sMessage = "hello"; with ...
- golang实现ios推送
生成pem文件 打开Keychain Access 导出推送证书和私钥 推送证书 cert.p12 私钥 key.p12 导出.pem文件 转换推送证书 openssl pkcs12 -clcerts ...
- 第三百二十八天 how can I 坚持
今天电脑快把我搞疯了,一天得死机快十次,不知道怎么回事,最后升级了win10,感觉就是比较好. 哎,成了这个样子,当初为什么又让我抽中了那个签,搞不懂啊,这都是为啥. 我哪里错了,还是冥冥中自有天意, ...
- Using Boost Libraries in Windows Store and Phone Applications
Using Boost Libraries in Windows Store and Phone Applications RATE THIS Steven Gates 18 Jul 2014 5:3 ...