美文网首页
java基础设计模式之静态工厂方法模式

java基础设计模式之静态工厂方法模式

作者: writeanewworld | 来源:发表于2018-08-24 15:33 被阅读0次

1.设计模式:
静态工厂方法模式,也叫做简单工厂模式。

2.个人理解
工厂指的是一个对象生产工厂,当需要那个操作,就去实例化对应的。
官方的好处: 更面向对象,易于扩展

 条件:需要实例化的类有一个共同的基类

3.面试题:
使用java实现一个控制台程序,输入数字操作符然后计算出结果来。
emmo...
一般思路就是 用Scanner录入数字运算符,然后算就得了,如下

 public class Computer {
 public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("请输入第一个数字:");
    float firstNum  = in.nextFloat();
    System.out.println("请输入第二个数字:");
    float secondNum  = in.nextFloat();
    System.out.println("请输入运算符号:");
    String countQuato = in.next();
    if("+".equals(countQuato)){
        System.out.println("result : "+(firstNum+secondNum));
    }else if("-".equals(countQuato)){
        System.out.println("result : "+(firstNum-secondNum));
    }else if("*".equals(countQuato)){
        System.out.println("result : "+(firstNum*secondNum));
    }else if("/".equals(countQuato)){
        System.out.println("result : "+(firstNum/secondNum));
    }
}

4.but
使用了简单工厂模式,瞬间逼格就不一样了,虽然代码量多了,但是。。。

提供一个接口:

public interface StaticOperation {

  public abstract float getResult(float firstNumber,float secondNumber);
 

}

主体:

package com.begin21.top.StaticFactoryMode;

import java.util.Scanner;

//静态工厂方法
public class StaticFactory{
public static void main(String[] args) {
    ThisOperation factory = new ThisOperation();
    
    @SuppressWarnings("resource")
    Scanner input = new Scanner(System.in);
    
    System.out.println("请输入第一个数字:");
    int firstNumber = input.nextInt();
    
    System.out.println("请输入运算符:");
    String symbol = input.next();
    
    System.out.println("请输入第二个数字:");
    int secondNumber = input.nextInt();
    
    //拿到输入操运算符对应的对象,这里有个好处就是用到那个操作就实例化那个操纵。
    @SuppressWarnings("static-access")
    StaticOperation operation = factory.getOperationObject(symbol);
    float result = operation.getResult(firstNumber, secondNumber);
    System.out.println("您好,通过简单工厂模式计算出来的结果是:" + result);
    
}   
}

//加减乘除
class AddFactory implements StaticOperation{

@Override
public float getResult(float firstNumber, float secondNumber) {
    return firstNumber + secondNumber;
}

}
class SubFactory implements StaticOperation{
@Override
public float getResult(float firstNumber, float secondNumber) {
    return firstNumber - secondNumber;
}
}
class MulFactory implements StaticOperation{
@Override
public float getResult(float firstNumber, float secondNumber) {
    return firstNumber * secondNumber;
}
}
class DivFactory implements StaticOperation{
@Override
public float getResult(float firstNumber, float secondNumber) {
    return firstNumber / secondNumber;
}
}

//静态工厂模式创建对象
class ThisOperation{
public static StaticOperation getOperationObject(String symbol){
    //理解: 通过多态,批量创建对象。这个创建对象的地方就像一个对象生产工厂,这不就是工厂模式么
    //对象生产工厂
    StaticOperation operation = null; 
    switch(symbol) {
     case "+" : operation = new AddFactory();
     break;
     case "-" : operation = new SubFactory();
     break;
     case "*" : operation = new MulFactory();
     break;
     case "/" : operation = new DivFactory();
     break;
     default:
         break;
    }
    
    return operation;
}
}

相关文章

  • 设计模式系列-简单工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 定义 简单工厂模式又叫做静态工厂方法模式...

  • JAVA基础23种设计模式----简单工厂模式--MonkeyK

    JAVA基础23种设计模式----简单工厂模式--MonkeyKing 简单工厂模式属于类的创建模型模式,又叫静态...

  • 大话设计模式之_工厂模式

    大话设计模式之_工厂模式 工程方法(即简单工厂模式simpleFactory,或静态工厂方法 static fac...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • 简单工厂模式

    Java23种设计模式--简单工厂模式 一、什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法...

  • 设计模式之工厂模式

    设计模式之工厂模式 1. 简单工厂模式 1.1 模式定义 简单工厂模式又称为静态工厂方法,它属于创建型模式。在简单...

  • Java与模式

    《JAVA与模式》之简单工厂模式《JAVA与模式》之工厂方法模式《JAVA与模式》之抽象工厂模式

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • 安卓设计模式-简单工厂模式

    安卓设计模式-简单工厂模式 是什么 简单工厂模式又称为静态方法模式(因为工厂类中定义了一个静态方法),简单工厂模式...

  • JAVA基础23种设计模式----工厂模式--MonkeyKin

    JAVA基础23种设计模式----工厂模式--MonkeyKing 工厂方法模式同样属于类的创建模式又被称为多台工...

网友评论

      本文标题:java基础设计模式之静态工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/egabiftx.html