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

      简单工厂将业务逻辑部分和界面逻辑部分分离开来,降低了界面逻辑和业务逻辑的耦合度,符合面向对象迪米特法则。下面以一个加法减法运算器为例,各位读者可以自行按照这种设计方式设计出一个小小的运算器。

    1、业务逻辑

    1.1、父类Operation

     1 package com.designmode.simplefactory;
     2 
     3 public abstract class Operation {
     4 
     5     protected int numberA;
     6     protected int numberB;
     7     
     8     public void setValue(int numberA,int numberB){
     9         this.numberA=numberA;
    10         this.numberB=numberB;
    11     }
    12     
    13     public abstract int getResult();
    14 }

    1.2、加法子类AddOperation

     1 package com.designmode.simplefactory;
     2 
     3 public class AddOperation extends Operation {
     4 
     5     @Override
     6     public int getResult() {
     7         // TODO Auto-generated method stub
     8         return this.numberA+this.numberB;
     9     }
    10 
    11 }

    1.3、减法子类SubOperation

     1 package com.designmode.simplefactory;
     2 
     3 public class SunOperation extends Operation {
     4 
     5     @Override
     6     public int getResult() {
     7         // TODO Auto-generated method stub
     8         return this.numberA-numberB;
     9     }
    10 
    11 }

    1.4、生成对象工厂

     1 package com.designmode.simplefactory;
     2 
     3 public class OperationFactory {
     4 
     5     /**
     6      * 创建对象工厂
     7      * @param operate 运算符
     8      * @return 运算对象
     9      */
    10     public static Operation createOperation(String operate){
    11         Operation operation = null;
    12         switch (operate) {
    13         case "+":
    14             operation = new AddOperation();
    15             break;
    16         case "-":
    17             operation = new SunOperation();
    18             break;
    19         default:
    20             System.out.println("请输入正确的运算符!");
    21             break;
    22         }
    23         return operation;
    24     }
    25 }

    2、页面逻辑

     1 package com.designmode.simplefactory;
     2 
     3 import java.util.Scanner;
     4 
     5 public class OperationTest {
     6 
     7     @SuppressWarnings("resource")
     8     public static void main(String[] args) {
     9         Scanner reader = new Scanner(System.in);
    10         System.out.print("请您输入第一个数字:");
    11         int numberA = Integer.parseInt(reader.nextLine());
    12         System.out.print("请您输入运算符:");
    13         String operate = reader.nextLine();
    14         System.out.print("请您输入第二个数字:");
    15         int numberB = Integer.parseInt(reader.nextLine());
    16         
    17         Operation operation = OperationFactory.createOperation(operate); // 生成运算对象
    18         operation.setValue(numberA, numberB); // 设置numberA与numberB的值
    19         int result = operation.getResult(); // 获取运算结果
    20         System.out.println(numberA+operate+numberB+"="+result); // 打印运算结果
    21     }
    22 }
  • 相关阅读:
    API---CreateIoCompletionPort
    Socket()与WSASocket()的区别
    HeapCreate
    WSAStartup()函数的使用
    makeword()
    WSAData是个什么结构体用什么用
    hostent结构体和wsadata结构体
    【C++11新特性】
    【C++11新特性】 auto关键字
    【C++11新特性】 nullptr关键字
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5953410.html
Copyright © 2011-2022 走看看