设计模式(二)抽象工厂模式 狼

以下所有数据位伪造:O(∩_∩)O哈哈~!!

业务逻辑:以同一系统适应美国、中国的工资计算方式,计算公式是:到手的工资=基本工资+奖金-税收;

如中国的工资计算是 到手的工资=基本工资+奖金-税收;

税收=基本工资*5%;奖金=企业自己的计算方式

   美国的工作计算是:税收=(基本工资*10%+奖金)*25%;奖金=美国企业自己的计算方式;

所有虽然工资计算的总公式相同(到手的工资=基本工资+奖金-税收),但具体的工资计算方式却不同。所以总公式就可以抽象。

系统代码逻辑解释:

一:Constant负责提供所有的基本数据。这里只是基本工资和具体反射那个类。2个税收的比例计算为多余,暂时不用。

二:抽象工厂负责抽象高级的业务逻辑。为具体工厂提供抽象方法和具体要创建那个工厂。

三:具体工厂实现,抽象工厂中的2二个抽象类。该工厂负责实例化,返回具体的奖金计算类、和税收计算类。

四:具体的税收计算类,负责计算方法,计算完成后返回一个结果。

五:接口的定义,抽象了的税收计算和奖金计算方式,实现统一的接口暴露给客户端。。因为工厂返回具体的类,类的方法返回具体的计算类。而计算类有统一遵循了相同的接口。所以可以端的调用不变。

六:client客户端调用类。

七:抽象工厂,中有2个抽象方法 分别是creatBons(计算奖金)、CreateTax(计算税收);一个工厂方法,根据配置文件,用反射来,来实现具体实例化那一个类。

然后具体的工厂,实现creatBons(计算奖金)、CreateTax(计算税收)的接口,这二个接口实例化返回一个具体的税收计算方法和奖金计算方法。

在客户端Cliet直接调用抽象工厂:     IBons bons = AbstractFactory.GetInstance().CreatBons();ITax tax = AbstractFactory.GetInstance().CreatTax();

因为抽象工厂返回的是一个具体的工厂类,并且该类下的CreatBons、和CreatTax都实现了接口Ibons、和ITax、所以可以直接调用该方法。就可以直接计算奖金和税收了。

原文地址:https://www.cnblogs.com/gowhy/p/2000550.html