简单的工厂模式

从今天开始 每天进步一点点。开始了解并学习设计模式,就从简单的工厂模式开始吧....



简单工厂模式(Simple Factory):不利于产生系列产品

简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。

在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。

先来看看它的组成:

1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

一句话概括就是

   简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。

接下来 就用简单的工厂模式设计一个计算器:

首先 我们先创建一个实体类:

接着就开始创建加减乘除的实体类来继承这个基础的具体父类

然后就开始创建工厂类

最终的运行结果:

这个计算器只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了计算器的结果。

时间: 2024-10-21 07:11:20

简单的工厂模式的相关文章

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

第一章:代码无错就是优-简单的工厂模式 先建立一个计算类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

Factory(简单的工厂模式)

一句话总结:用一个方法来代替new关键字解决什么问题:对象产生过多,或者经常有子类替换生成.项目里面怎么用:对于经常生成的对象,或者父子类替换的对象.模式结构:写一个对外声明的方法,方法里面使用new关键字代替.框架里面使用:spring的核心就是工厂模式. 工厂方法模式:有四个角色,抽象工厂模式,具体工厂模式,抽象产品模式,具体产品模式.不再是由一个工厂类去实例化具体的产品,而是由抽象工厂的子类去实例化产品 // 抽象产品角色 public interface Moveable { void

java简单的工厂模式

定义:专门定义一个类来创建其他类的实例,被创建的实例通常都具有共同的父类和接口.意图:提供一个类由它负责根据一定的条件创建某一及具体类的实例 //简单工厂,存在不符合开闭原则的地方,可以在参考抽象工厂/工厂方法 //输入苹果,就可以通过工厂直接调用采摘苹果,而不用new一个Apple public class factoryDemo { public static void main(String[] args) { // TODO Auto-generated method stu Facto

C#调用短信接口(通过简单的工厂模式整合多个短信平台)

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; namespace DUANXIN { public class SendSmsFactory { public static SendSmsBase CreateFactory(string className) { S

【简单的工厂模式】一个简单的计算器

对于一个对设计模式一无所知的程序员来说,维护成本,无疑是一个致命的问题,所以从今开始,我要开始努力学习,设计模式,在这里,记录自己的学习成果 生产类 abstract class Oper 抽象类 class Add 加 class Sub 减 class Mul 乘 class Div 除 class Operate 计算 abstract class Oper { public $num1 = 0; public $num2 = 0; abstract public function get

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

java深入浅出设计模式----简单的工厂模式(一)----业务逻辑分离

现在可扩展性和可维护性特别强,即便是想要计算多个数,那也很容易了,改动的地方很少.而且还能防止恶意的程序员篡改代码. 如果需要进行两个以上的数字的运算,在该接口中添加方法就行了. package separatetwo.operate; public interface Operate { public abstract int getResult(int numberOne, int numberTwo); } 加法 package separatetwo.operate; public cl

多态、id类型与简单工厂模式

ID类型 objective-c中id可以指向任何对象,在使用id的时候注意:不要再id后面加上'*' . id object = [[Child alloc] init]; // 类型转换 Child *child = (Child *) object ; [child myMethod] ; id 的缺点 id类型所存储的对象到运行时才判断对象所属的类,当我们使用id类型调用一个不存在的方法时,运行之前并不报错,运行起来后程序会崩溃.比如下面这个错误的例子. // animal 没有main

工厂模式一之简单工厂

工厂用来生产商品,然后卖给供应商,再由供应商转手给门店,再卖给顾客 .这样的一种生产到供应的过程,看看如何应用到我们的程序中. 1.下面以衣服店为例子. 第一步 clothes.js //创建一个衣服店模型. var ClothesShop = function (){} ClothesShop.prototype = { sellClothes: function (color){ var clothesType = ['Red', 'Blue', 'Yello', 'Green', 'Gra