美文网首页
一、简单工厂模式

一、简单工厂模式

作者: Serenity那年 | 来源:发表于2018-10-28 21:30 被阅读4次
简单工厂模式:只是用来解决创建对象的问题;每个对象都有共同的行为(方法),但是具体的实现不同;

需求如下:给一商场做一个结算软件,这个结算总共包括“正常收费”,“满300减100”,“打八折”几项;这个例子就能使用简单工厂模式;

1.首先将共同的行为抽象出来:接收一个没有活动的支付额,返回一个参与活动后的支付额
package com.zcbl.client.zcblsdk.factorymodel;

/**
 * Created by serenitynanian on 2018/2/2.
 */

public abstract class CashSuper {

    public abstract double acceptCash(double money);
}
2.分别创建“正常收费”,“满300减100”,“打八折”这三个活动的类;
package com.zcbl.client.zcblsdk.factorymodel.impl;

import com.zcbl.client.zcblsdk.factorymodel.CashSuper;

/**
 * Created by serenitynanian on 2018/2/2.
 * 正常收费
 */

public class CashNormal extends CashSuper {
    @Override
    public double acceptCash(double money) {
        return money;
    }
}
package com.zcbl.client.zcblsdk.factorymodel.impl;

import com.zcbl.client.zcblsdk.factorymodel.CashSuper;

/**
 * Created by serenitynanian on 2018/2/2.
 * 现金折扣
 */

public class CashRebate extends CashSuper {
    private double moneyRebate ;

    public CashRebate(double moneyRebate) {
        this.moneyRebate = moneyRebate;
    }

    @Override
    public double acceptCash(double money) {
        return money*this.moneyRebate;
    }
}
package com.zcbl.client.zcblsdk.factorymodel.impl;

import com.zcbl.client.zcblsdk.factorymodel.CashSuper;

/**
 * Created by serenitynanian on 2018/2/2.
 * 返利收费子类
 */

public class CashReturn extends CashSuper {
    private double moneyCondition ;
    private double moneyReturn ;

    public CashReturn(double moneyCondition, double moneyReturn) {
        this.moneyCondition = moneyCondition;
        this.moneyReturn = moneyReturn;
    }

    @Override
    public double acceptCash(double money) {
        double result = money ;
        if (money > moneyCondition) {
            result = money - (money/moneyCondition)*moneyReturn;
        }
        return result;
    }
}
3.创建现金收费工厂类,来根据传入的活动类型来创建相应的实例;
package com.zcbl.client.zcblsdk.factorymodel;

import com.zcbl.client.zcblsdk.factorymodel.impl.CashNormal;
import com.zcbl.client.zcblsdk.factorymodel.impl.CashRebate;
import com.zcbl.client.zcblsdk.factorymodel.impl.CashReturn;

/**
 * Created by serenitynanian on 2018/2/2.
 * 简单工厂模式:这个模式只是用来解决创建对象的问题;
 * 现金收费工厂类
 */
public class CashFactory {

    public static CashSuper createCashAccept(String type){
        CashSuper cs = null ;
        switch (type) {
            case "正常收费":
                cs = new CashNormal();
                break ;
            case "满300减100":
                cs = new CashReturn(300, 100);
                break ;
            case "打八折":
                cs = new CashRebate(0.8);
                break ;

        }
        return cs ;
    }

    public static void main(String[] args) {
        CashSuper cs = CashFactory.createCashAccept("打八折");
        double result = cs.acceptCash(100);
        System.out.println("----result----->"+result);
    }
}

相关文章

  • [Android]三种工厂模式总结。

    Android中,工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一.简单工厂模式。 定义:简单工厂...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • 设计模式2-工厂模式

    工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式 简单工厂模式 简单工厂模式,就是建立一个工厂类,对实现了同一...

  • 设计模式(java)- 单例模式

    之前学习是简单工厂模式、工厂方法模式、抽象工厂模式,复习一下 简单工厂模式 简单工厂模式大概就是创建一个简单工厂类...

  • 设计模式-工厂模式

    一、工厂模式分类 简单工厂模式 工厂方法模式 抽象工厂模式 二、简单工厂模式 简单工厂就是讲需要new对象的那段代...

  • 工厂模式

    ONE、简单工厂模式(静态工厂模式) 一、介绍 简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一...

  • 设计模式

    设计模式(视频总结) [TOC] 一、简单工厂模式(Simple Factory) 简单工厂模式: 简单工厂模式属...

  • 设计模式——工厂设计模式

    简单工厂模式(静态工厂模式) 简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 工厂模式

    分类 简单工厂模式 工厂方法模式 抽象工厂模式 1. 简单工厂模式 简单工厂模式其实就是只有一个工厂,根据传进来参...

网友评论

      本文标题:一、简单工厂模式

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