设计模式之工厂方法模式
设计模式之工厂方法模式意图工厂方法模式 (Factory Method)是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 让子类决定实例化对象的类型。 工厂模式中,增加一种产品类,就要增加一个工厂类:因为每个工厂类只能创建一种产品的实例。 工厂模式遵循“开放-封闭原则”:工厂模式中,新增一种产品并不需要修改原有类,仅仅是扩展。 简单工厂模式相比于工厂方法模式 优点:工厂类中包含必要的逻辑判断,可根据客户端的选择条件动态实例化需要的类。对于客户端来说,去除了对具体产品的依赖。 缺点:违背了开放封闭原则。 每添加一个新的产品,都需要对原有类进行修改。增加维护成本,且不易于维护。 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 适用场景 当你在编写代码的过程中, 如果无法预知对象确切类别及其依赖关系时, 可使用工厂方法。 如果你希望用户能扩展你软件库或框架的内部组件, 可使用工厂方法。 如果你希望复用现有对象来节省系统资源, 而不是每次都重新创建对象, 可使用工厂方法。 结构 结构说明 产品 (Product) 将会对接口进行声明。 对于所有...
设计模式之简单工厂模式
设计模式之简单工厂模式简介简单工厂模式思想简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。 简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。 简单工厂模式是一种对象创建型模式。但是简单工厂模式不属于23 种 Gof 设计模式之一。 简单工厂模式要点优点:简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。 缺点:工厂类集中了所有实例的创建逻辑,违背了高内聚责任分配原则。随着系统中具体产品类不断增多,势必要不断修改工厂类,不易维护和扩展。同时,这也违背了开放封闭原则。 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 实例如何实现一个具有加减乘除基本功能的计算器? 对于这四种运算来说,都需要两个操作数,差别仅在于返回的结果不同。 由此,我们可以抽象化它们的共性,提炼出一个父类。这个类中包含两个操作数,一个返回结果方法,这个方法...