策略模式,java23种设计模式
策略模式,java23种设计模式
什么是策略模式?
指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。
关键字:同一行为、不同场景、不同实现方式
稳定与变化 : 交个人所得税(稳定)、不同国家税不一样(变化)。让变化的部分去依赖稳定的部分,使变化的部分稳定下来
UML图:
策略模式符合面向对象设计原则中的哪个原则?
开闭原则:对扩展开放,对修改关闭。
如在交个人所得税这实例中,不同国家对个人所得税算法不一样。策略模式对个人所得税算法进行了抽象化实现,
不同国家可继承个人所得税算法抽象类对算法具体化实现,而这种抽象化的具体化现就形成了对针对不同国家的税法扩展。
实例
from abc import abstractmethod, ABC class City(ABC): @abstractmethod def arithmetic(self, money) -> int: pass class China(Tax): # 中国 20%个人所得税 def arithmetic(self, money) -> int: return money * 0.2 class USA(Tax): # 美国 14%个人所得税 def arithmetic(self, money) -> int: return money * 0.14 class Person: def __init__(self, city: City, money: int): self.city = city self.money = money def tax(self): return self.city.arithmetic(self.money) # 小明 中国 所交个人所得税 xiaomin = Person(China(),2000) # 小红 美国 所交个人所得税 xiaohong = Person(USA(),2000) print(xiaomin.tax()) print(xiaohong.tax())
相关内容
- 暂无相关文章
评论关闭