首页 > 代码库 > 简单?工?厂模式 (Simple Factory Pattern)
简单?工?厂模式 (Simple Factory Pattern)
@interface ViewController (){ Shape *_shape;}@end@implementation ViewController- (void)loadView{ //设置画板 self.view=[[SimpleDrawBoard alloc]init]; self.view.backgroundColor=[UIColor whiteColor];}- (void)viewDidLoad { [super viewDidLoad]; }- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch=[touches anyObject]; CGPoint point=[touch locationInView:self.view]; //工厂生产形状 _shape=[Factory shapeWithType:kRud];// _shape.fillColor=[UIColor blackColor]; [_shape addPoint:point];}- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch=[touches anyObject]; CGPoint point=[touch locationInView:self.view]; SimpleDrawBoard *board=(SimpleDrawBoard *)self.view; [_shape addPoint:point]; [board drawShape:_shape];} - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch=[touches anyObject]; CGPoint point=[touch locationInView:self.view]; [_shape addPoint:point]; SimpleDrawBoard *board=(SimpleDrawBoard *)self.view; [board drawShape:_shape];}//// SimpleDrawBoard.m// Facetory-0904//// Created by apple on 14-9-4.// Copyright (c) 2014年 apple. All rights reserved.//#import "SimpleDrawBoard.h"@interface SimpleDrawBoard(){ Shape *_shape;}@end@implementation SimpleDrawBoard- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // Initialization code } return self;}// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{ CGContextRef context=UIGraphicsGetCurrentContext(); [_shape draw:context];}- (void)drawShape:(Shape *)shape{ _shape=shape; [self setNeedsDisplay];}@end//// Shape.m// Facetory-0904//// Created by apple on 14-9-4.// Copyright (c) 2014年 apple. All rights reserved.//#import "Shape.h"@implementation Shape- (void)addPoint:(CGPoint)point{ [self doesNotRecognizeSelector:_cmd];}- (void)draw:(CGContextRef)context{ if (_fillColor) { [_fillColor setFill]; } if (_lineWidth) { CGContextSetLineWidth(context, _lineWidth); } if (_strokColor) { [_strokColor setStroke]; }}@end//// Rud.m// SimpleDrawBoard//// Created by apple on 14-9-4.// Copyright (c) 2014年 戴维营教育. All rights reserved.//#import "Rud.h"#include "math.h"@interface Rud (){ CGPoint _startPoint; CGPoint _endPoint; CGFloat rid; BOOL bEnd;}@end@implementation Rud- (void)addPoint:(CGPoint)position{ if (!bEnd) { _startPoint = position; bEnd = YES; } else { _endPoint = position; CGFloat r=(_endPoint.x - _startPoint.x)*(_endPoint.x - _startPoint.x)+(_endPoint.y - _startPoint.y)*(_endPoint.y - _startPoint.y); rid=sqrtf(r); }}- (void)draw:(CGContextRef)context{ [super draw:context]; CGRect rect = CGRectMake(_startPoint.x-rid, _startPoint.y-rid,rid*2,rid*2); CGContextAddEllipseInRect(context, rect); CGContextDrawPath(context, kCGPathEOFillStroke);}@end
简单?工?厂模式 (Simple Factory Pattern)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。