简单工厂模式小结


直觉地使用计算机机能理解的面向过程的方式去解决问题,会出现耦合的问题,是一种短期的方案,使得程序不容易维护与拓展。所以应该将面向对象的思想应用到程序设计当中,通过封装、继承、多态将程序的耦合度降低,运用设计模式增强程序的灵活性,使得它易于修改与复用。为了培养更好的编程思维与习惯,先从设计模式的学习与使用开始,希望有计划地学习设计模式,并且逐渐从了解到化为内用嘤嘤嘤!

一、简单工厂模式:创建一个专门的类,使它根据情况创建不同类的对象,实现业务逻辑与界面逻辑的分离,降低耦合。

二、以实现简单计算器为例:创建基础运算抽象类继承抽象类,实现抽象类中的具体运算方法创建简单工厂类,由简单工厂类根据情况选定运算方法,即选定需要创建的类对象。
abstract class Operation{
    private double numberA=0;
    private double numberB=0;

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

    abstract double getResult() throws Exception;
}

/**
 * 继承抽象类,实现一些具体的运算
 */
class Add extends Operation{

    @Override
    double getResult() {
        return getNumberA()+getNumberB();
    }
}

class Less extends Operation{

    @Override
    double getResult() {
        return getNumberA()-getNumberB();
    }
}

class Mul extends Operation {

    @Override
    double getResult() throws Exception{
        if (getNumberB()!=0){
            return getNumberA()/getNumberB();
        }else{
            throw new Exception("除数为零,不合法");
        }
    }
}

public class SimpleFactory {
    public Operation chooseFunc (String operate){
        Operation operation=null;
        switch (operate){
            case "+":
                operation=new Add();
                break;
            case "-":
                operation=new Less();
                break;
            case "/":
                operation=new Mul();
                break;
            default:
                System.out.println("继续扩展方法吧");
                break;
        }
        return operation;
    }
}

class Test{
    public static void main(String[] args) throws Exception {
        double numberA=23;
        double numberB=22;
        String[] operate={"+","-","/"};

        SimpleFactory simpleFactory=new SimpleFactory();
        Operation operation=simpleFactory.chooseFunc(operate[2]);
        operation.setNumberA(numberA);
        operation.setNumberB(numberB);
        System.out.println(operation.getResult());
    }
}

  

 


原文地址:https://www.cnblogs.com/chen-ying/p/10979058.html

时间: 2024-08-13 16:16:53

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

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

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

第一话-简单工厂模式

写在前面:本人最近在看<大话设计模式>这本书,书里是用C#讲解的实例.现在写心得笔记与大家分享,就试着写一个JAVA版的.例子还是书里的例子.不过是Java语言实现的.后面也会给出本人的一些理解建议.谢谢<大话设计模式>的作者. 一.什么是简单工厂模式? 简单工厂模式是工厂模式里最简单的一种,所以叫做简单工厂模式.简单工厂模式需要一个工厂类去对类的实例进行条件分发,这样可以省去程序分发时的麻烦,并且把分发的代码从主类中移到一个单独的类里,这样既能使代码简洁明了,有使代码灵活性争强.

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

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

设计模式之_简单工厂模式、工厂方法模式、抽象工厂模式 、策略模式、策略与工厂的区别(转)

一.前言 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上 Audi后他说“开奥迪车!”.你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C语言一直是通过这种方式来坐车的 幸运的是这种有病的现象在OO语言中可以避免了.下面以Java语言为基础来引入我们本文的主题:工厂模式! 二.简介

&quot;围观&quot;设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式的核心思想在我认为是将类创建的权利授予给工厂类,其他的类不允许创建,授予了权限的类创建好之后,需要某些的对象的时候,可以去工厂当中去取.也就是像一个工厂一样,用的人不需要关心对象怎么来的,你只需要关心怎么用就好了.工厂模式细分为三种,简单工厂.工厂方法.抽象工厂三种模式.这三种模式比较相似,往往会引发混淆,本文主要结合实际的例子去进行区分.理清三者之间的关系与适用范围. 概述 简单工厂 对于简单工厂,我个人的理解是,直接实现一个方法,要生产什么由这个方法以及传入的参数来决定. 工厂方法

简单工厂模式

目前正在看<大话设计模式>,写此系列的文章记录下学习的经过. 简单工厂模式 先看如下代码,使用面向对象的原理实现计算器功能 Operation运算类 1 public class Operation 2 { 3 private double numberA = 0; 4 private double numberB = 0; 5 6 public double NumberA 7 { 8 get { return numberA; } 9 set { numberA = value; } 10

大话设计模式:简单工厂模式

由于面向过程编程造成的代码膨胀问题越来越严重,使其维护的代价高,灵活性很低.为了使代码易维护.易扩展.易复用和灵活性好,所以我们在采用面向对象编程的时候,防止采用面向对象的语言实际上却做着面向过程的事儿,更需要采用某种设计模式,核心就是使程序变得高内聚,低耦合,这样的程序才能达到上面的四个优点.而简单工厂模式的出现也正是为了达到这样一种效果,将工厂和产品分块,具体解决了实例化那个对象(具体产品)的需求.从而实现了高内聚,低耦合.使程序易维护.易扩展.易复用和灵活性好.同时也用到了面向对象编程的三

Python 设计模式--简单工厂模式

简单工厂模式(Factory Pattern)是一种创建型的设计模式,像工厂一样根据要求生产对象实例. 特点:根据不同的条件,工厂实例化出合适的对象. <大话设计模式>中实例:四则运算计算器 代码: 1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 4 class Operation: 5 def getResult(self): 6 pass 7 8 class OperationAdd(Operation): 9 def getResul

简单工厂模式( Simple Factory Pattern )

1. 简单工厂模式( Simple Factory Pattern ) 1.1. 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮.矩形按钮.菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式. 1.2