简单工程模式

代码实现 
//simpleFactory.h
#ifndef _SimpleFactory_H_
#define _SimpleFactory_H_

#include <iostream>
#include <exception>
#include <string>

using namespace std;

class Operation {
protected:
    double _numberA = 0;
    double _numberB = 0;
public:
    Operation() {}
    Operation(double a, double b) {
        _numberA = a;
        _numberB = b;
    }
    Operation& operator=(Operation& p) {
        _numberA = p.getNumberA();
        _numberB = p.getNumberB();
    }
    double getNumberA() {
        return _numberA;
    }
    void setNumberA(double value) {
        _numberA = value;
    }
    double getNumberB() {
        return _numberB;
    }
    void setNumberB(double value) {
        _numberB = value;
    }
    virtual double GetResult() {
        return 0;
    }
};
class OperationAdd :public Operation {
    double GetResult() {
        double result = 0;
        result = _numberA + _numberB;
        return result;
    }
};
class OperationSub :public Operation {
    double GetResult() {
        double result = 0;
        result = _numberA - _numberB;
        return result;
    }
};
class OperationMul :public Operation {
    double GetResult() {
        double result = 0;
        result = _numberA * _numberB;
        return result;
    }
};
class OperationDiv :public Operation {
    double GetResult() {
        double result = 0;
        try {
            result = _numberA / _numberB;
        }
        catch (exception&) {
            cout << "发生除0异常" << endl;
        }
        return result;
    }
};
class OperationFactory {
public:
    static Operation* createOperation(char operate) {
        Operation* oper;
        switch (operate) {
        case '+':
            oper = new OperationAdd();
            break;
        case '-':
            oper = new OperationSub();
            break;
        case '*':
            oper = new OperationMul();
            break;
        case '/':
            oper = new OperationDiv();
            break;
        }
        return oper;
    }
};
#endif //_SimpleFactory_H_

UML图

总结

可以发现,简单工厂类是制造运算类的对象的,并且只需要传递关键参数给简单工厂类的方法(通常为静态方法),就可以创造出相应的对象出来。
故简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象不需要关心。

收获

1.可以通过封装、继承、多态把程序的耦合度降低。
2.可以通过设计模式使程序变得更加灵活,易于修改,并且易于复用。
3.简单工厂模式适用创建对象少的情况,需要传参来指定需要的对象(产品)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的C#工程模式案例: ```csharp //定义接口 public interface IShape { void Draw(); } //实现接口 public class Circle : IShape { public void Draw() { Console.WriteLine("Circle Drawn"); } } public class Square : IShape { public void Draw() { Console.WriteLine("Square Drawn"); } } //工厂类 public class ShapeFactory { public IShape GetShape(string shapeType) { switch (shapeType) { case "CIRCLE": return new Circle(); case "SQUARE": return new Square(); default: return null; } } } //客户端代码 class Program { static void Main(string[] args) { ShapeFactory shapeFactory = new ShapeFactory(); IShape shape1 = shapeFactory.GetShape("CIRCLE"); shape1.Draw(); IShape shape2 = shapeFactory.GetShape("SQUARE"); shape2.Draw(); Console.ReadKey(); } } ``` 在此示例中,我们首先定义了一个`IShape`接口,表示所有形状都必须实现绘制方法`Draw()`。然后,我们实现了两个形状类`Circle`和`Square`,它们都实现了`IShape`接口,并且实现了自己的`Draw()`方法。 接下来,我们创建了一个工厂类`ShapeFactory`,它具有一个`GetShape()`方法,该方法根据传递的形状类型返回相应的形状。最后,在客户端代码中,我们实例化`ShapeFactory`并使用`GetShape()`方法获取所需的形状,并调用其`Draw()`方法。 这个简单的例子展示了工厂模式如何在C#中使用。它可以帮助我们解耦客户端代码和具体实现类,并使代码更具可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

༄yi笑奈何

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值