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

    简单工厂模式属于类的创建型模式,适合用来对大量具有共同接口的类进行实例化,它能够推迟到执行的时候才动态决定要创建哪个类的实例。而不是在编译时就必须知道要实例化哪个类。

    python:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    class Circle(object):
    	def draw(self):
    		print 'draw circle'
    
    class Rectangle(object):
    	def draw(self):
    		print 'draw Rectangle'
    
    class ShapeFactory(object):
    	def create(self, shape):
    		if shape == 'Circle':
    			return Circle()
    		elif shape == 'Rectangle':
    			return Rectangle()
    		else:
    			return None
    
    fac = ShapeFactory()
    obj = fac.create('Circle')
    obj.draw()


    c++:

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    class Shape
    {
    public:
    	virtual void draw(){}
    };
    
    class Circle : public Shape
    {
    public:
    	void draw()
    	{
    		cout << "draw circle" << endl;
    	}
    };
    
    class Rectangle : public Shape
    {
    public:
    	void draw()
    	{
    		cout << "draw Rectangle" << endl;
    	}
    };
    
    class ShapeFactory
    {
    public:
    	static Shape* create(const char *opt)
    	{
    		if (opt == NULL)
    			return NULL;
    
    		if (!strcmp(opt, "Circle"))
    			return new Circle();
    		else if (!strcmp(opt, "Rectangle"))
    			return new Rectangle();
    		else 
    			return NULL;
    	}
    };
    
    int main()
    {
    	Shape *obj = ShapeFactory::create("Rectangle");
    	
    	if (obj)
    		obj->draw();
    	
    	return 0;
    }
    


     

     

  • 相关阅读:
    linux shell在while中用read从键盘输入
    ubuntu14.04折腾迅雷xware
    select与epoll分析
    ubuntu 14.04下练习lua
    C++中的重载、覆盖、隐藏
    删除ubuntu旧内核
    fcntl函数加文件锁
    系统中断与SA_RESTART
    linux使用共享内存通信的进程同步退出问题
    leetcode-easy-others-268 Missing Number
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7049081.html
Copyright © 2011-2022 走看看