zoukankan      html  css  js  c++  java
  • 设计模式-简单工厂模式

    简单工厂模式:是一种实例化对象的方式,只要输入实例化对象的名字,就可以通过工厂对象的相应工厂函数来制造你需要的对象

    核心是,对于一个父类的多个继承子类,工厂对象的工厂函数根据用户输入,自动new 出一个子类对象 并返回其父类的指针,这样利用父类的指针执行父类的虚函数,就可以动态绑定子类的重写函数,从而实现多态.

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include  <memory>
    
    using namespace std;
    
    class Operation
    {
    private:
    	double A, B;
    public:
    	double GetA() const {return A;}
    	double GetB() const {return B;}
    	void SetA(double x) {A=x;}
    	void SetB(double y) {B=y;}
    	double virtual GetResult(){return 0;}
    	Operation():A(0), B(0){}
    };
    
    class Add : public Operation
    {
    public:
    	double GetResult()
    	{
    		return GetA()+GetB();
    	}
    };
    
    class Sub : public Operation
    {
    public:
    	double GetResult()
    	{
    		return GetA()-GetB();
    	}
    };
    
    class Mul : public Operation
    {
    public:
    	double GetResult()
    	{
    		return GetA()*GetB();
    	}
    };
    
    class Div : public Operation
    {
    public:
    	double GetResult()
    	{
    		return GetA()/GetB();
    	}
    };
    
    class SimpleFactory
    {
    public:
    	static Operation * CreateOpeartor(char ch)
    	{
    		Operation * p;
    		switch(ch)
    		{
    		case '+':
    			p = new Add();
    			break;
    		case '-':
    			p = new Sub();
    			break;
    		case '*':
    			p = new Mul();
    			break;
    		case '/':
    			p = new Div();
    			break;
    		}
    		return p;
    	}
    };
    
    int main(int argc, char *argv[])
    {
    	double A = 0;
    	double B = 0;
    	char ch = '';
    	cin>>A>>ch>>B;
    
    	tr1::shared_ptr<Operation> op(SimpleFactory::CreateOpeartor(ch));
    	op->SetA(A);
    	op->SetB(B);
    	cout<<op->GetResult()<<endl;
    	system("pause");
    	return 0;
    }
    

      

  • 相关阅读:
    总结Linq或者lamdba的写法
    JObject 用法 、JProperty 用法、JArray 用法 Linq 转 Json
    System.DateTime.Now 24小时制。
    将springboot jar应用打包成镜像并在docker运行成容器
    RPC框架——简单高效hessian的使用方式
    WebService—规范介绍和几种实现WebService的框架介绍
    Java三大体系JavaEE、JavaSE、JavaME的区别
    JavaEE体系架构
    JavaEE 技术体系
    注解之@CookieValue
  • 原文地址:https://www.cnblogs.com/zhaodun/p/7147453.html
Copyright © 2011-2022 走看看