大话设计模式之简单的工厂模式

第一章:代码无错就是优-简单的工厂模式

先建立一个计算类Operation

Operation.h文件

@interface Operation : NSObject

@property(nonatomic,assign)double numberA;

@property(nonatomic,assign)double numberB;

@end

Operation.m文件

@implementation Operation

@end

然后分别创建他们的子类Add,Sub,Mul,Div

Add.h

#import "Operation.h"

@interface Add : Operation

-(double)OperationAdd;

@end

Add.m

#import "Add.h"

@implementation Add

-(double)OperationAdd{

    return self.numberA+self.numberB;

}@end

Sub.h

#import "Operation.h"

@interface Sub : Operation
-(double)operaSub;
@end

Sub.m

#import "Sub.h"

@implementation Sub
- (double)operaSub{
      return self.numberA-self.numberB;
}
@end

Mul.h

#import "Operation.h"

@interface Mul : Operation
-(double)OperaMul;
@end

Mul.m

#import "Mul.h"

@implementation Mul
-(double)OperaMul{
    return self.numberA*self.numberB;
}
@end

Div.h

#import "Operation.h"

@interface Div : Operation
-(double)OperaDiv;
@end

Div.m

#import "Div.h"

@implementation Div
-(double)OperaDiv{
//    double result=0.0;
    if (self.numberB==0) {
           NSLog(@"除数不能为0");
       }
           return self.numberA/self.numberB;
}
@end

计算的工厂类OperationFactory.h

#import <Foundation/Foundation.h>
#import "Add.h"
#import "Sub.h"
#import "Mul.h"
#import "Div.h"
#import "Operation.h"
@interface OperationFactory : NSObject
@property(nonatomic,strong)Add *add;
@property(nonatomic,strong)Sub *sub;
@property(nonatomic,strong)Mul *mul;
@property(nonatomic,strong)Div *div;
-(double)createOperate:(char)opreate;
@end

OperationFactory.m

#import "OperationFactory.h"

@implementation OperationFactory
-(double)createOperate:(char)opreate{
     double result = 0.0;
       switch (opreate) {
        case ‘+‘:
         result= self.add.OperationAdd;

            break;
        case ‘-‘:
               result=self.sub.operaSub;
            break;

        case ‘*‘:
               result=self.mul.OperaMul;
               break;

        case ‘/‘:
               result=self.div.OperaDiv;
            break;
    }
    return result;
}
@end

主函数

#import <Foundation/Foundation.h>
#import "OperationFactory.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        double result;
        OperationFactory *factory=[[OperationFactory alloc]init];
        Add *ad=[Add new];
        ad.numberA=10;
        ad.numberB=6;
        factory.add=ad;

//        Div *di=[Div new];
//        di.numberA=21;
//        di.numberB=0;
//        factory.div=di;
////        result =[factory createOperate:‘/‘];

        result=[factory createOperate:‘+‘];

        NSLog(@"%lf",result);
    }
        return 0;
}

时间: 2024-12-11 15:17:14

大话设计模式之简单的工厂模式的相关文章

大话设计模式C++版——抽象工厂模式

前面说过,简单工厂模式是最基础的一种设计模式,那以工厂命名的设计模式就是23种设计模式中最多的一种,他们一脉相承,一步一步进化而来,这里就是其中的最后一种--抽象工厂模式(Abstract Factory),其是在工厂方法模式的基础上改进而来,如果没有弄明白工厂方法模式的同学请先观看<大话设计模式C++版--工厂方法模式>. 为什么会有抽象工厂模式?抽象工厂模式是简单工厂模式缺陷的终极解决方式么?NO,抽象工厂模式并不是为了解决简单工厂模式的缺陷而活着,它是因为有新的使命而诞生. 一个简单的例

&lt;五&gt;读《《大话设计模式》》之工厂模式

怎么又是工厂模式呢?上次不是讲过简单工厂模式吗?不错,此工厂模式非彼工厂模式. 工厂模式:定义一个用于创建对象的接口,让子类决定实例化那一个类,工厂方法是一个类的实例化延迟到其子类. 还是以代码来进行比较吧 1.操作接口,与简单工厂模式一样 publicabstractclass Operation { publicdoublenumberA; publicdoublenumberB; publicabstractdouble getResult(); } 2.相加.相减类与简单工厂模式一样 p

《大话设计模式》c++实现 工厂模式

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象. 介绍 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行. 主要解决:主要解决接口选择的问题. 何时使用:我们明确地计划不同条件下创建不同实例时. 如何解决:让其子类实现工厂接口,返回的

c++ 设计模式之简单的工厂模式

调试环境:vs2010 // test0.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; class COperation { public: int first; int second; virtual double getResult() { return 0; } }; class addOperation : public COperation

大话设计模式之简单工厂模式

简单工厂模式 最近朋友推荐了一本书<大话设计模式>,此书刚刚到,博主也还没开始看,希望以博文的方式与大家一起分享,一起学习. 简单工厂模式,也就是说,到底要实列化谁,将来会不会增加实列化的对象,比如增加开根运算,这是很容易实列化的地方应该考虑用一个单独的类来做这个创造实列的过程,这就是工厂,来我们一起看看这个类如何写. 简单运算工厂类: import public public class OperationFactory { public static OperationFactory(st

大话设计模式_简单工厂模式(Java代码)

简单的描述:一个父类.多个子类,实例化那个子类由一个单独的工厂类来进行 图片摘自大话设计模式: 运算类: 1 package com.longsheng.simpleFactory; 2 3 public class Calculate { 4 5 private double firstNum; 6 private double secondNum; 7 8 public double getFirstNum() { 9 return firstNum; 10 } 11 12 public v

《大话设计模式》——简单工厂模式

C#视频学习结束后,自己开始了设计模式之旅,对于我这个菜鸟来说,学习设计模式有点困难,课本上的例子照着敲实现容易,但是自己真能做到举一反三确实很难,感觉自己学的老不踏实了. 在弄简单的工厂模式的时候,前几个例子真是贴近我的编写代码的习惯啊,怨不得小菜没有收到被录用的消息哪(就是小菜用C#编写计算机控制台程序的那个),我对<大话设计模式>中的简单工厂模式理解,简单工厂模式就是一个类,里面用到了多态,他根据我们传进去的参数不同而实例化出不同的对象,然后在利用对象的方法进行操作等等.但是书上到了这之

大话设计模式之简单工厂模式&amp;工厂方法模式&amp;抽象工厂模式

创造类模式分为三种:简单工厂模式,工厂模式和抽象工厂模式. 定义: 简单工厂模式:用一个单独的类来做创造实例的过程. 工厂模式:一个用于创建对象的接口,让子类决定实例化哪一个类,讲一个类的实例化 延迟到其子类. 抽象工厂模式:为创建一组相关或相互依赖的对象的类,而不指定具体类. 结构图: 这是简单工厂的结构图,从图中就很好理解. 简单工厂的优点: 根据用户需要,new出需要的对象. 但是简单工厂弊端: 当新加入一个功能是,就要修改工厂.这个时候,就需要工厂模式了. 从图中我们可以看出: 工厂模式

学习大话设计模式01_简单工厂模式(简易计算器)

1 /** 2 * 面向对象(运算类) 3 * 简易计算器 4 * @author Monica 5 * 6 */ 7 public class Operation { 8 private double numberA = 0; 9 private double numberB = 0; 10 11 //虚函数 12 public double GetResult() { 13 double result = 0; 14 return result; 15 } 16 17 public doub