5.封装创建-简单工厂方法(Simple Factory method)+多态工厂+抽象工厂(Abstract factories)
这个应该是我们平时接触得最多的设计模式了吧,我个人也是经常使用,这是一个创建型的设计模式,其实这3个模式原理都是一样的,不过使用了接口,内部类,所以使得实现方法更加的优雅。我们到底面对着一个什么样的问题,这才决定我们为什么要用它,假如你的系统里面很多地方需要创建a对象和b对象,很明显,这样是分散的分布在系统里面的,这时,如果你要在创建a对象的地方添加一个新类型c对象,那么你就惨了,你需要在那么多个地方创建,而且更加麻烦的是逻辑问题,因为多了一个对象,判断方面可能会出现不可预知的bug,这时候我们会想,为什么不弄成一个服务,生产服务,我使用的是a服务,而不是a对象,当我需要添加新的对象,我可以在a服务里面添加,这时候我的客户端代码就不需要改变了,需要改变的是生产a服务的时候加多一个对象,这就是工厂模式的基本思路:所有需要创建的对象的代码都由工厂来代工,当需要新的功能,新的类型,只需要改变一下工厂就ok了,这也保证了接口的稳定性。
简单工厂方法(Simple Factory method):
class car{
}
class benz extends car{}
class baoma extends car{}
class factory{
public static getCar(String type){
if(type.equals("Benz")) return new benz();
if(type.equals("baoma")) return new baoma();
}
}
这就是一个简单的工厂方法了,面对简单的系统,使用这个就很足够,但是一旦逻辑复杂了,创建的产品需要逻辑判断,那么这个工厂可能就负担不了了,而且所有逻辑都在工厂这里,一旦工厂着火,那么整个系统就该瘫痪了,所以我们就衍生出下一个工厂模式
多态工厂(Polymorphic factories):
多态工厂的好处就是为了解决刚才上诉的问题,他实现了每一类对象,每一个工厂,我觉得在逻辑上把纵多的逻辑分担在了每一个工厂上面,上面的例子,只需要为每一个产品添加一个工厂类即可
抽象工厂(Abstract factories):
抽象工厂其实更加一般化,更加抽象化,使用内部类实现更加优雅,我举个例子,奔驰和宝马都是跑车类型的,然后五菱和东方都是屌丝类型的,那么这时候是不是就有两个大类型,那么我们就为其创建两个工厂,每个工厂分别生产两大类型的车,然后跑车工厂就得生产奔驰宝马....,可以简单概述就是一个工厂生产多个相同大类型的产品,而且经常我们用到抽象工厂,我们可以假设是根据不同环境,生产不同的环境类型(一系列需要的产品)。
其实工厂模式的变形很多,只要感觉对了,就差不多了,不需要死扣,毕竟复杂度这个东西是一个很难以衡量的东西,而且工厂模式通常可以混用的。我的另外一篇文章说的比较好。
http://abcxo.iteye.com/admin/blogs/1476090
分享到:
相关推荐
Python工具箱.zip - 办公自动化、多态文件搜索、高级加密。Python工具箱.zip - 办公自动化、多态文件搜索、高级加密。Python工具箱.zip - 办公自动化、多态文件搜索、高级加密。Python工具箱.zip - 办公自动化、多态...
2. **接口**: 接口在Java中是一种定义行为规范的方式,它包含一组抽象方法声明。例如,List、Set、Map都是Java集合框架中的接口。通过实现接口,一个类可以声明它支持特定的行为。接口的使用增强了代码的灵活性和可...
- **抽象类继承**:通过继承抽象类,子类可以实现抽象类中定义的抽象方法,进而实现多态。 - **多态的优势**: - **代码灵活性**:多态使得代码更加灵活,可以处理不同类型的对象,而无需知道它们的具体类型。 -...
第六周-第11章节-Python3.5-多态实例讲解.avi
**Java语言程序设计-第七章 类的封装、多态和继承** 在Java编程语言中,类的封装、多态和继承是面向对象编程的三大核心特性。这些概念为软件开发提供了强大的抽象能力和代码复用机制,使得程序设计更加灵活、高效。...
3. **工厂接口(Factory)**:声明了一个或多个用于创建产品的抽象方法,通常返回的是产品接口类型的对象。 4. **具体工厂类(Concrete Factory)**:实现了工厂接口,提供了创建具体产品对象的逻辑。 ### 三、工厂...
3. **类型抽象**:在设计复杂的系统时,可以通过创建抽象类来定义一组相关的类应具有的基本行为,具体实现则由各个子类提供。 4. **框架设计**:许多框架采用继承机制来扩展功能,如Spring框架中的各种扩展点就是...
笔记
多态--简单工厂
工厂方法(Factory Method)设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个类的实例化延迟到了子类,这样做的好处是每个子类可以决定实例化哪一个类。这种类型的设计模式...
今天我们要探讨的是“工厂方法”(Factory Method)这一经典的设计模式。工厂方法是创建型模式,它提供了一种封装对象创建过程的方式,使得创建过程独立于使用它的客户端。 工厂方法模式的核心思想在于定义一个创建...
【标题】"Simple-Factory-for-Salary.rar_factory" 指的是一个使用简单工厂设计模式来计算薪资的项目,特别适用于Visual C++ 6.0(VC6)环境。这个项目可能包含了一个或多个用于创建薪资计算类实例的工厂类,以适应...
另外,Java中的方法默认都是虚拟的(相当于C++中的虚函数),这意味着即使方法没有被声明为`abstract`或`final`,在子类中也可以被重写,并在运行时根据对象的实际类型确定调用哪个版本的方法。如果一个方法被声明为...
本文将深入探讨“多态简单工厂”这一主题,结合北大青鸟的C#.NET讲堂内容,详细解析多态的概念、简单工厂模式的原理以及如何在C#中实现它们。 首先,多态(Polymorphism)是指同一种行为或操作可以有不同的表现形式...
Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...
在`da06抽象继承封装多态接口.zip`的案例中,开发者可能创建了一系列的类,通过这些类展示了Flutter中如何使用抽象、继承、封装和多态来设计和组织代码。通过运行Test文件,我们可以验证和理解这些概念在实际应用中...
在Java或C#等面向对象的语言中,抽象方法是实现多态的一种常见方式。让我们深入探讨一下如何通过抽象方法来实现多态。 首先,我们需要创建一个抽象类,这个抽象类代表了所有动物的共同特性。例如,我们可以定义一个...
通过学习多态的基本概念、抽象类和抽象方法的使用、以及多态的实际应用,我们可以更好地理解和利用面向对象编程中的多态特性。多态不仅提高了代码的灵活性和可维护性,还使得代码更加易于扩展和重用。在实际开发中,...