设计模式之一(简单工厂模式)

简单工厂模式

说先说一下我们熟悉的23中设计模式划分:

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。

今天只要是针对简单工厂模式给大家讲解一下。直接例子上。

问题:请用C++,java,c#。vb任意一种面向对象语言实现一个计算器控制台程序。要求输入两个数和运算符号。得出结果。

这种问题大家应该都差不多都会。但是今天主要讲解,这个简单工厂模式的开发使用。


package com.hs.huojg;


import java.io.Serializable;


public class OperationEntity implements Serializable{
private Double numberA;//第一个数
private Double numberB;//第二个数
public Double getNumberA() {
return numberA;
}
public void setNumberA(Double numberA) {
this.numberA = numberA;
}
public Double getNumberB() {
return numberB;
}
public void setNumberB(Double numberB) {
this.numberB = numberB;
}
public Double GetResult(){
double result=0d;
return result;
}
}


大家看到上面代码的含义了。不错,就是先定义两个数出来。有人会问,为什么要这样定义呢。最后再给大家讲。先看代码。

package com.hs.huojg;
/**
 * 简单运算工厂类
 *
 * 只需要输入运算符,工厂就会自动找到自己的对象实例化
 * 通过多态,返回父类的方式来实现计算器的结果。
 *
 * */
public class operactionFactory {
    public static OperationEntity createOperation(String operation){
        OperationEntity oper=null;
        switch (operation) {
        case "+":
            oper= new operationAdd();
            break;
        case "-":
            oper= new operationSub();
            break;
        case "*":
            oper= new operationMul();
            break;
        case "/":
                oper= new operationDiv();            

            break;
        default:
            break;
        }
        return oper;

    }

}

哈哈哈哈。。。这一段代码如果你看懂了。那么这个简单工厂模式你就算,会简单应用了哦!

下面继续代码走起。

package com.hs.huojg;
/**
 * 加法类
 *
 * */
public class operationAdd extends OperationEntity{
    @Override
    public Double GetResult(){
        double result=0d;
        result=getNumberA()+getNumberB();
        return result;
    }
}

package com.hs.huojg;


public class operationDiv extends OperationEntity{
@Override
public Double GetResult(){
double result=0d;
if(getNumberB()!=0){
result=getNumberA()/getNumberB();
}else{
result= Double.parseDouble("不能被除");
}
return result;
}
}

package com.hs.huojg;

public class operationMul extends OperationEntity {
@Override
public Double GetResult(){
double result=0d;
result=getNumberA()*getNumberB();
return result;
}
}

package com.hs.huojg;

public class operationSub extends OperationEntity{
@Override
public Double GetResult(){
double result=0d;
result=getNumberA()-getNumberB();
return result;
}
}

 

代码完毕

最后再来个测试:

package com.hs.huojg;

public class FactoryTest {
    public static void main(String args[]){
        OperationEntity oper=new OperationEntity();
        oper=operactionFactory.createOperation("*");
        oper.setNumberA(4d);
        oper.setNumberB(5d);
        Double redult=oper.GetResult();
        System.out.println(redult);
    }
}

总结:以上代码就是用简单工厂模式开发出来的,计算器。这么简单的代码,有什么难理解的嘛? 相比大家从代码中就会知道。什么是简单工厂模式。不错。简单工厂模式就是实例化对象的。就这么简单。以上代码注重点:第一:对象初始化的条件。第二回调结果。

如果大家感觉以上设计有什么缺陷请加。499749405群进行交流。让我们一起成长。

时间: 2024-10-13 19:55:12

设计模式之一(简单工厂模式)的相关文章

【设计模式】简单工厂模式

以面向对象的思想和简单工厂模式,写一个C++计算器程序,代码如下: #include <iostream> using namespace std; class Operation { public: Operation(double left, double right) { lhs = left; rhs = right; } const double GetLeft() const { return lhs; } const double GetRight() const { retur

设计模式之简单工厂模式

设计模式之简单工厂模式 动机:         不暴露实例化逻辑来创建对象.通过公共的接口创建新的对象.         这是一个简单的实现,客户端需要一个product,但是client不直接使用new对象,而是通过提供需要的对象信息来找factory得到新的product.         这个factory实例化一个具体的product并返回(转化成抽象的类),client段使用这个抽象的类而不用考虑它具体的实现. 应用举例:        也许工厂模式是使用最多的模式之一.举个例子,一个

设计模式初探—简单工厂模式

为什么要学习设计模式? 可重用.可维护.可扩展.灵活性好 什么是简单工厂模式? 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 简单工厂模式的好处? (1)将具体业务和实现进行分离 (2)将多个具体业务之间进行解耦 解决的问题? 单独的类来创造

【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式

课程回顾: 接口:1.属性:public\static\final2.方法:public\abstract 多态:1.静态化(编译时)多态重载2.动态化(运行时)多态重写对象转型 1.向上转型 2.向下转型 今日内容:内部类:定义在类的内部的类1.成员内部类格式:[修饰符] class 类名 { }内部不能有静态的属性和方法,可以访问外部类的属性,也可以调用外部类的方法 在静态方法中的使用格式:外部类 外对象=new 外部类();成员内部类 对象名=外对象.new 成员内部类(); 2.静态内部

iOS设计模式 - (3)简单工厂模式

iOS设计模式 - (3)简单工厂模式           by Colin丶 转载请注明出处:              http://blog.csdn.net/hitwhylz/article/details/40381721 一.简述 简单工厂模式(FACTORY),通过面向对象的封装,继承和多态来降低程序的耦合度.将一个具体类的实例化交给一个静态工厂方法来执行. 该模式中的角色包括: 工厂类(Simple Factory): 只包含了创建具体类的静态方法. 抽象产品(Product):

大话设计模式_简单工厂模式(Java代码)

简单的描述:一个父类.多个子类,实例化那个子类由一个单独的工厂类来进行 图片摘自大话设计模式: 运算类: 1 package com.longsheng.simpleFactory; 2 3 public class Calculate { 4 5 private double firstNum; 6 private double secondNum; 7 8 public double getFirstNum() { 9 return firstNum; 10 } 11 12 public v

设计模式初探——简单工厂模式

学习设计模式已经有一段时间了,<大话>也正看第二遍,可是却迟迟不敢下笔.算了,先拿简单的开刀吧. 简单工厂模式是设计模式中一种比较简单.基础的设计模式. 定义: 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 包含元素: 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象. 抽象产品(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的

01.设计模式_简单工厂模式

转载自  http://www.cnblogs.com/zhili/p/SimpleFactory.html 一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂模式的介绍 说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程

设计模式之简单工厂模式(Simply Factory)摘录

从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 该模式中包含的角色及其职责:(1).工厂(Creator)角色:简单工厂模式的

C#设计模式(2)——简单工厂模式

一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式——简单工厂模式. 二.简单工厂模式的介绍 说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程中,当使用”new”关键字创建一个对象时,此时该类就依赖与这个对象,也就是他们之间的耦合度高,当需求变化时,我