码迷,mamicode.com
首页 > 编程语言 > 详细

python设计模式 之 简单工厂模式

时间:2014-10-09 01:40:38      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   sp   2014   c   

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

 

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;
}


 

 

python设计模式 之 简单工厂模式

标签:style   blog   color   io   os   ar   sp   2014   c   

原文地址:http://blog.csdn.net/aspnet_lyc/article/details/39895777

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!