设计模式在软件设计中的应用
- 格式:doc
- 大小:48.00 KB
- 文档页数:5
软件设计模式及应用软件设计模式是指在软件设计过程中,通过总结和归纳出现的实际问题及解决办法,提炼出的一套经验和规范化的解决方案模板。
设计模式旨在提高代码的可复用性、可扩展性和可维护性,同时也能够提高软件设计的灵活性和可靠性。
常见的软件设计模式包括单例模式、工厂模式、观察者模式、代理模式、装饰器模式等。
下面以几个常见的设计模式为例,介绍其应用场景和具体实现方式。
1. 单例模式:单例模式是一种创建型设计模式,保证一个类只能实例化一个对象,并提供一个全局访问点。
在应用中,当需要一个全局唯一的对象时,可以使用单例模式来保证对象的唯一性。
例如,在某个系统中,需要记录系统日志,并将日志保存到一个文件中。
可以使用单例模式来创建一个全局唯一的日志记录器,以便在各个模块中都可以访问和使用该日志记录器。
单例模式的实现方式有多种,常见的有饿汉式和懒汉式。
饿汉式在类加载时就创建对象,并提供一个静态方法返回该对象;懒汉式在第一次调用时才创建对象,并提供一个静态方法返回该对象。
2. 工厂模式:工厂模式是一种创建型设计模式,将对象的创建和使用分离,通过一个工厂类来创建对象。
工厂模式可以隐藏对象的具体实现,提供一致的接口供调用方使用。
例如,假如有一个图表软件,可以创建不同类型的图表,如饼图、柱状图、折线图等。
可以使用工厂模式来创建图表对象,调用方通过工厂类来创建具体的图表对象,而无需关注图表对象的具体创建过程。
工厂模式可以根据不同的调用需求,提供不同的工厂类。
常见的工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式。
3. 观察者模式:观察者模式是一种行为型设计模式,建立对象之间的一对多关系,当一个对象的状态发生变化时,其他依赖该对象的对象都会收到通知并更新状态。
例如,在一个购物网站中,当用户下单购买商品时,需要通知库存管理系统和订单管理系统等进行相应的处理。
可以使用观察者模式,在用户下单时,通知相关的系统进行处理。
观察者模式由被观察者和观察者组成。
软件开发中的设计模式及其应用设计模式是由四人带领的软件开发者团队在1994年《设计模式:可复用面向对象软件的基础》一书中提出的。
设计模式是一种被证明有效的解决方案,用于解决面向对象软件设计中的常见问题。
这些模式已被广泛应用于软件开发领域,并被证明可提高软件开发的效率和可重用性。
本文将介绍其中的几种常见设计模式及其应用,以供软件开发者参考。
1.工厂模式工厂模式是一种创建型模式,它提供了一个通用的接口,用于创建对象。
通过使用工厂模式,我们可以隐藏创建对象的实现细节,使得客户端代码无需知道要实例化哪个类。
应用:在开发过程中,我们通常会遇到许多场景需要创建多个对象,而这些对象的创建逻辑可能比较复杂。
在这种情况下,我们可以使用工厂模式来将复杂的对象创建流程进行封装,以简化客户端的代码。
2.单例模式单例模式是一种创建型模式,它确保一个类只有一个实例,并提供全局访问点来访问该实例。
单例模式可以有效地控制全局资源的使用,避免重复创建对象。
应用:单例模式通常适用于多个客户端需要共享相同的资源的情况,例如配置文件、数据库连接对象等全局性的资源。
通过使用单例模式,我们可以避免频繁创建对象,提高资源利用率。
3.装饰器模式装饰器模式是一种结构型模式,它可以在不修改原始对象的情况下,动态地为对象添加新的功能。
装饰器模式通过包装一个对象来扩展其功能,可以灵活地在运行时添加和删除功能。
应用:装饰器模式通常适用于需要动态地扩展对象功能的场景。
例如,我们可以使用装饰器模式为原本只有基本功能的类添加其他功能,例如添加日志记录、性能统计、缓存等。
4.观察者模式观察者模式是一种行为型模式,它定义了一种对象间的一对多依赖关系,使得当其中一个对象发生改变时,所有依赖它的对象都会收到通知,并自动更新。
观察者模式使得对象之间的关系更加松散,增强了对象的可重用性和可扩展性。
应用:在开发过程中,我们经常遇到需要通知其他对象状态变化的场景。
例如,当一份数据更新时,我们需要将此更新通知给其他相关的对象。
23种设计模式及应用设计模式是指在软件设计过程中,针对常见问题的解决方案的经验总结。
它们提供了解决特定或常见问题的可重用方案,使得软件设计更加灵活、可扩展和可维护。
1. 创建型模式:- 单例模式:确保一个类只有一个实例,并提供全局访问点。
- 简单工厂模式:通过一个共同的接口创建不同的对象实例。
- 工厂方法模式:定义一个创建对象的接口,由子类决定具体创建哪个对象。
- 抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口。
- 建造者模式:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
2. 结构型模式:- 适配器模式:将一个类的接口转换为客户端所期待的另一种接口。
- 桥接模式:将抽象部分与它的实现部分分离,使它们可以独立变化。
- 组合模式:将对象组合成树形结构以表示"整体-部分"的层次结构。
- 装饰器模式:动态地给对象添加额外的功能,避免继承带来的类膨胀问题。
- 外观模式:为子系统中一组接口提供一个一致的界面。
3. 行为型模式:- 策略模式:定义一系列算法,将它们封装起来,并使它们可以相互替换。
- 观察者模式:定义对象之间的依赖关系,当对象状态改变时自动通知依赖方。
- 模板方法模式:定义一个操作中的算法骨架,将一些步骤延迟到子类中实现。
- 命令模式:将一个请求封装成一个对象,从而使您可以用不同的请求参数化客户端对象。
- 状态模式:允许对象在其内部状态改变时改变其行为。
4. J2EE模式:- MVC模式:将应用程序划分为三个核心组件:模型、视图和控制器。
- 业务代表模式:将对业务对象的访问和业务逻辑从表示层分离出来。
- 数据访问对象模式:用于将业务逻辑和数据访问逻辑分离。
- 前端控制器模式:通过一个单一的入口点来处理应用程序的所有请求。
- 传输对象模式:用于在客户端和服务器之间传输数据。
5. 并发模式:- 线程池模式:创建一组预先初始化的线程对象来处理任务。
系统设计常见的设计模式及其实际应用案例在软件开发领域,设计模式是一组被广泛应用于解决常见问题的可重复利用的解决方案。
设计模式可以提高代码的可读性、可维护性和可扩展性,使系统更加灵活和可靠。
本文将介绍一些常见的系统设计模式,并提供相应的实际应用案例。
一、单例模式单例模式是一种创建型模式,它保证一个类只有一个实例,并提供一个全局访问点。
单例模式常被用于数据库连接、日志记录器等资源共享的场景。
实际应用案例:Java中的Runtime类就是一个典型的单例模式。
通过调用`Runtime.getRuntime()`方法,可以获取到全局唯一的Runtime实例,从而实现对系统运行时环境的访问。
二、工厂模式工厂模式是一种创建型模式,它定义了一个用于创建对象的接口,但具体的对象创建逻辑由具体的工厂类来实现。
工厂模式能够将对象的创建与使用分离,降低了耦合性。
实际应用案例:在Java中,Calendar类就是通过工厂模式来创建日期对象的。
通过调用`Calendar.getInstance()`方法,可以根据当前系统的时区和语言环境,返回一个具体实现的Calendar对象。
三、观察者模式观察者模式是一种行为型模式,它定义了一种一对多的依赖关系,使得当一个对象状态发生变化时,其依赖对象能够自动收到通知并进行相应的更新。
实际应用案例:Android中的广播机制就是观察者模式的实际应用。
当一个广播消息被发送时,所有注册了相应广播接收器的组件都能够接收到并做出响应。
四、策略模式策略模式是一种行为型模式,它定义了一系列可相互替换的算法,并将每个算法封装在独立的类中。
通过切换不同的策略对象,可以在运行时改变系统的行为。
实际应用案例:在电商系统中,用户下单时可以选择不同的支付方式,比如支付宝、微信、银行卡等。
这些不同的支付方式就可以使用策略模式来实现。
五、装饰者模式装饰者模式是一种结构型模式,它允许动态地为对象添加额外的功能,同时又不改变其原有的结构。
常见的设计模式及应用场景设计模式是软件开发中常用的一种代码组织和重用的技术。
它提供了一种解决问题的方案,能够帮助开发人员有效地解决常见的设计问题,并提供可维护、可扩展和可重用的软件。
下面是一些常见的设计模式及其应用场景。
1. 单例模式(Singleton Pattern):单例模式保证一个类只有一个实例,并提供一个全局访问点。
常用于需要共享资源的对象,例如线程池、日志类等。
2. 工厂模式(Factory Pattern):工厂模式用于创建对象,将对象的创建逻辑与客户端代码分离。
常用于创建复杂的对象或者需要隐藏对象创建过程的场景。
3. 观察者模式(Observer Pattern):观察者模式定义了对象间的一对多关系,使得当一个对象状态改变时,其所有依赖对象都能收到通知并自动更新。
常用于事件处理、消息通知等场景。
4. 装饰者模式(Decorator Pattern):装饰者模式在不改变对象原有结构的基础上,动态地为对象添加新的功能。
常用于增强对象的功能或者修改对象的外观。
5. 策略模式(Strategy Pattern):策略模式定义了一系列算法,并将每个算法都封装起来,使得它们可以相互替换。
常用于根据不同的条件选择不同的算法。
6. 适配器模式(Adapter Pattern):适配器模式将一个类的接口转换成另一个接口,以满足客户端的需求。
常用于将不兼容的接口进行适配。
7. 外观模式(Facade Pattern):外观模式提供一个统一的接口,用于访问子系统的一群接口。
常用于简化复杂的子系统调用。
命令模式将一个请求封装成一个对象,使得可以用不同的请求对客户进行参数化。
常用于实现撤销、重做、任务队列等功能。
9. 建造者模式(Builder Pattern):建造者模式通过将复杂对象的构建逻辑与对象本身分离,使得同样的构建过程可以创建不同的表示。
常用于创建复杂的对象。
10. 模板方法模式(Template Method Pattern):模板方法模式定义了一个操作中的算法框架,把一些步骤推迟到子类实现。
软件设计模式软件设计模式是为了解决软件设计中经常遇到的一些具有代表性的问题而总结出来的解决方案。
它们是经过验证的、被广泛应用的设计思想,可以提高软件系统的可维护性、可扩展性和可重用性。
本文将介绍一些常见的软件设计模式,并分析它们的应用场景和解决方案。
一、单例模式单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。
在实际应用中,我们经常需要创建只有一个实例的对象,比如数据库连接池、配置信息等。
通过单例模式,我们可以确保在系统中只存在一个对象实例,避免资源的浪费和重复创建。
二、工厂模式工厂模式是一种创建型设计模式,它抽象了对象的创建过程,通过一个工厂类统一实例的创建,而不需要直接调用构造函数。
工厂模式可以根据不同的参数返回不同的具体对象,增加了代码的灵活性和可扩展性。
在实际开发中,我们常常使用工厂模式来动态创建对象,达到降低代码耦合度的目的。
三、观察者模式观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当被观察对象的状态发生改变时,所有依赖它的对象都会收到通知并自动更新。
观察者模式可以实现对象之间的解耦,降低了系统的复杂性和耦合度。
在实际应用中,我们常常使用观察者模式来实现事件处理、UI界面更新等功能。
四、适配器模式适配器模式是一种结构型设计模式,它将一个类的接口转换成客户端所期望的另一种接口。
适配器模式可以解决不兼容接口之间的问题,使得原本由于接口不匹配而无法工作的类可以一起工作。
在实际应用中,适配器模式经常被用于现有系统的重构,以兼容新的要求。
五、策略模式策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装在具有共同接口的独立类中,使得它们可以互相替换。
策略模式使得算法的选择可以独立于客户端的实现,提高了代码的灵活性和可扩展性。
在实际应用中,我们常常使用策略模式来实现不同的业务逻辑处理。
六、装饰器模式装饰器模式是一种结构型设计模式,它通过动态地给一个对象添加额外的职责,而不需要修改原始对象的结构。
软件开发中的设计模式及应用在现代软件开发中,设计模式是一种被广泛应用的构建复杂软件系统的方法。
它是对软件工程的一种理论进步,可以帮助开发者们迅速解决特定的问题,同时也可以提高软件系统的可重用性、可扩展性和易维护性。
设计模式是针对特定问题的通用解决方案。
它们描述了在何种情况下使用特定的对象和类结构来解决问题,并不依赖于任何特定的编程语言。
这些抽象的设计可以应用于不同的编程语言和开发环境中,使得开发者们可以在不同的场合下有效地利用它们。
设计模式分为三个主要类别:创建型模式、结构型模式和行为型模式。
每一类别都有自己独特的功能和应用场景。
在实际的软件开发中,我们通常会综合运用这些模式,以达到最佳的效果。
创建型模式主要用于处理对象的创建过程,它们包括工厂模式、抽象工厂模式、单例模式、建造者模式和原型模式。
其中,工厂模式是创建对象的一种通用方法,它通过工厂方法将对象的实际创建过程延迟到子类中去实现。
抽象工厂模式则是针对一组相关对象族的创建而设计的,它通过工厂的抽象方法来创建产品的族类。
单例模式可以确保一个类只有一个唯一的实例,它常常被用于控制资源的访问权限。
建造者模式则可以帮助我们更方便地构建比较复杂的对象,它分步骤地完成对象的构建过程。
原型模式则是通过克隆已有对象来创建新的对象。
结构型模式主要用于处理类和对象的组合,它们包括适配器模式、桥接模式、装饰器模式、外观模式、享元模式和代理模式。
适配器模式可以将一个类的接口转换成客户端所期望的另一种接口形式。
桥接模式则是用于分离抽象化和实现化的接口,从而使它们可以独立地进行变化。
装饰器模式则是用于动态地添加或修改对象的行为。
外观模式则为大型复杂的系统提供了一个简单、易用的接口。
享元模式则可以减少系统中对象的数量,从而减少了内存占用。
代理模式则用于控制对对象的访问,并可以在访问时添加额外的功能。
行为型模式主要用于处理对象间的交互和通信,它们包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式和中介者模式。
23种设计模式的经典运用介绍设计模式是解决软件设计中常见问题的可重复使用的解决方案。
本文将介绍23种经典的设计模式,并给出它们在实际开发中的应用示例。
通过学习这些设计模式,您将增加对软件设计的理解,并能够更好地解决问题。
创建型设计模式1.工厂方法模式(F a c t o r y M e t h o d)工厂方法模式通过定义一个创建对象的接口,但由子类决定实例化具体类。
这种方法可以延迟实例化过程,具有更高的灵活性和可扩展性。
应用场景:-在一个系统中,希望客户端与具体类的实例化解耦。
-希望通过增加具体类的扩展来增加系统的灵活性。
2.抽象工厂模式(A b s t r a c t F a c t o r y)抽象工厂模式提供一个接口,用于创建相关或依赖对象组。
这种模式将对象的实例化推迟到子类中,从而实现了解耦。
应用场景:-当一个系统独立于其产品的创建、组合和表示时。
-当需要一个系列的相互依赖的对象而无需指定其具体类时。
3.单例模式(S i n gl e t o n)单例模式确保一个类只有一个实例,并提供一个全局访问点。
这种模式常用于控制对资源的访问,例如数据库连接或日志文件。
应用场景:-当需要一个类的唯一实例,并且该实例需要被多个客户端共享时。
-当需要限制系统中特定类的实例数量时。
4.原型模式(P r o to t y p e)原型模式通过复制现有对象来创建新对象。
这种模式对于创建需要消耗大量资源的对象非常有用,可以通过克隆现有对象来提高性能。
应用场景:-当一个系统的某些对象的创建比较昂贵时。
-当需要避免构造函数调用,而直接通过复制现有对象来创建新对象时。
5.建造者模式(B ui l d e r)建造者模式将一个复杂对象的构建过程与其表现分离,使得相同的构建过程可以创建不同的表现。
应用场景:-当想要构建一些复杂对象时,如生成器。
-当需要创建对象的过程具有多个步骤,并且每个步骤都可以按需选择或省略时。
结构型设计模式6.适配器模式(A da p t e r)适配器模式将一个类的接口转换为客户端所期望的另一个接口。
软件工程中的设计模式及应用一、前言在软件开发过程中,设计模式是指在面向对象编程中,经常使用的一些反应出设计经验的典型结构。
这些典型结构经常出现的问题,通常也有相对应的解决方法,这些解决方法就是设计模式。
设计模式是一种可重用的知识,它是对软件设计中普遍存在性的困难问题的描述。
本文将从工厂模式、单例模式、代理模式和门面模式四个方面分别介绍设计模式及其应用。
二、工厂模式在工厂模式中,我们不需要创建对象时调用 new,而是调用工厂中的方法来创建实例对象。
工厂模式用于创建对象,该模式提供了更好的方式来封装创建实例对象的代码。
工厂模式可以帮助我们减小由 new 操作符带来的耦合。
举个例子,我们要从一个键入的文件中获取数据,我们可以使用XML 和JSON 两种格式来存储数据。
如果传递的数据为XML,则返回 XMLParser 类对象实例,否则返回 JSONParser 类对象实例。
在这种情况下,我们可以将工作委托给一个工厂类,该工厂类可依据传递给它的参数,在运行时动态创建类的对象。
三、单例模式当我们只需要一个对象实例并需要在整个应用程序中使用时,就可以使用单例模式。
我们只需使用一个类来创建对象实例,并确保该类只有一个对象。
单例模式通过提供一种节省内存,同时保证所有其他对象都能访问该对象的方法。
当我们实例化一个类时,就会为该类创建一个新的对象,每次我们创建新的对象时,都会占用内存。
为了避免这种情况,我们需要使用单例模式来确保只创建一个对象。
四、代理模式代理模式是软件开发中的一种常见设计模式。
当一个类的某些功能需要额外的处理时,可以使用代理模式。
代理模式允许我们在不改变原有类的代码时增加它的功能。
代理设计模式通常使用在需要控制和管理某些对象时,以提高实施的效率。
该模式分为静态和动态代理两个部分,其中静态代理使用较多。
静态代理在编译时已经知道代理类与被代理类的类型,因此在程序运行时效率高。
具体应用场景,例如电影票购票时的代理,代理类可以提供优惠券、打折等服务。
设计模式常用的设计模式及其应用场景软件设计中,设计模式被广泛应用于不同领域的系统开发。
设计模式是对设计问题的解决方案的描述。
设计模式提供了一种结构化方式,用于描述和解决常见的软件设计问题。
本文将介绍一些常用的设计模式及其应用场景。
这些设计模式可以提供对软件设计的结构化解决方案。
1. 工厂模式工厂模式是一种常见的创建型模式,它将对象的创建过程抽象出来,并将这个过程委托给子类实现。
在工厂模式中,一个工厂对象负责创建其他对象。
这些对象可以是类的实例,也可以是接口的实现。
应用场景:- 当我们需要使用某个类的对象,但不知道该如何创建时,可以使用工厂模式;- 当所有需要使用的类对象都属于同一个类或接口的子类,但需要使用的具体子类在运行时才能确认时,可以使用工厂模式;2. 单例模式单例模式是一种创建型模式,它保证一个类只有一个实例,并提供全局访问点。
单例模式通常在需要不间断或共享访问资源的情况下使用。
应用场景:- 当一个类的实例只能存在一个时,可以使用单例模式;- 当某个对象需要频繁地创建和销毁,但实例化过程很慢或者需要大量的资源时,可以使用单例模式;3. 建造者模式建造者模式是一种创建型模式,它将一个复杂的对象构建过程分解为多个简单对象的构建过程。
建造者模式可以使得创建过程更加简单和灵活。
应用场景:- 当一个复杂的对象需要按部就班地创建时,可以使用建造者模式;- 当需要创建某个复杂对象的各个部件中的任意部分时,可以使用建造者模式;4. 适配器模式适配器模式是一种结构型模式,用于将两个不兼容的接口转换为兼容的接口。
适配器模式将一个类的接口转换为另一个接口,从而使得原本由于接口不兼容而不能一起工作的类能够一起工作。
应用场景:- 当需要使用某个类的功能,但是该类的接口与现有系统不兼容时,可以使用适配器模式;- 当需要重用已有类,但由于适应于其他类的接口,而不能直接使用该类时,可以使用适配器模式。
5. 装饰器模式装饰器模式是一种结构型模式,它可以在运行时添加对象新的额外行为。
设计模式在软件设计中的应用研究摘要软件设计模式是计算机软件专业方面一门很重要的课程。
几乎所有计算机专业的学生都学过这门课程。
但是我们堂堂认真听课次次辛苦写作业任劳任怨地学完了整个学期的课程,就代表我们掌握了软件设计模式的技巧了吗?答案是否定的,软件设计模式是用一种策略方式来提高软件的可靠性,提高代码的可复用性,提高软件的后期可维护性。
设计模式是对面向对象设计中反复出现的问题的解决方案。
这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。
这个术语的含义目前还存有争议。
算法不是设计模式,因为算法致力于解决问题而非设计问题。
设计模式通常描述了一组相互紧密作用的类与对象。
设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。
设计模式还为软件重构提供了目标。
而本文就是给大家浅析下本人学完设计模式课程后对其应用的一点儿认识。
关键词: 软件工程;设计模式; 算法;面向对象AbstractSoftware design model is a computer software professional courses is very important. Almost all computer science students have learned in this course. Seriously detract from the lectures but we worked hard times and hard working hard to learn over the course of the semester, on behalf of the model we have mastered skills in software design it? The answer is no, the software design pattern is a strategy approach to improve software reliability, improve code reusability and improve software maintainability late. Design patterns in object-oriented design is a recurring solution to the problem. The term in the 1990s by the Erich Gamma and others from the field of architectural design in the introduction to computer science come. The meaning of the term is still disputed. Algorithm is not designed to model, because the algorithm dedicated to solve problems rather than design problems. Design pattern describes a set of often closely interrelated role of classes and objects. Design patterns provide a common language to discuss software design, making the design experience of skilled designers and other designers can be for beginners to master. Design pattern also provides a target for software refactoring. The following article is for everyoneof course I am, after completion of design patterns a little understanding of their applications.Keywords: software engineering; Model design; Algorithms; object-oriented经过了本学期软件设计模式课程的学习,我确实感到受益匪浅,运用“设计模式" 主要看它能不能帮我们解决问题,一个例子举得好"在一张白纸上随便画几下,再用画图板'粘贴'一下,一张UML图示就出来了",十几个设计模式,并不完全适合我们。
用通俗易懂的语言阐述软件设计过程中的一些“模式”,在某种特定环境下,用最好的设计方法(代码高内聚,低耦合,使其有良好的可扩展性和可维护性)达到我们的目的,或许其方法有很多很多,但是寻找到最好的方法却不是件容易的事,设计模式是对前人的设计经验的一个总结,告诉我们在某种特定的环境下,学习设计模式有助于我们在设计软件的过程中少走很多弯路。
所以并不是模式用得越多就越好,用得不当就可能变成了反模式,不过对于自己的学习项目,还是要大胆偿试。
通过在大学三年做过的一些项目,在这些经验的进一步总结下。
总结出自己在软件设计模式方面的一些心得,因此在此谈谈对使用设计模式的一些看法,本人感觉如果要想很好地使用设计模式我们必须从以下几点入手。
首先是重视模式的选取由于各种设计模式,都有自身的特点和使用场景,所以在使用的过程中一定要选择合适的设计模式,这样才可以使软件设计模式的优点得到很好的发挥,如果选取不当反而会事倍功半。
以下就几种简单的模式做简单的介绍。
第一,工厂模式。
模式特点:工厂模式一般用于创建一类对象,而不用每次在使用时通过new()对象才能使用对象,而是通过工厂来完成对象的创建,这样不但提供了统一创建对象的入口,而且对于程序的可维护和可测试性都有很大的提高。
总体来说如下场景使用工厂模式非常合适:1、工厂负责创建某一类对象的时候,或者说工厂的职责比较单一时,如果说存在多个类型的对象时,用工厂模式就不如使用抽象工厂了。
2、一般比较少的积累对象,可以通过类型的判定创建不同的对象时,也是可以通过工厂模式来完成,例如多数据库的支持,我们在设计数据访问层时,利用简单对象工厂,通过枚举或者配置文件的形式,来动态的创建数据访问层实例。
3、一般来说类型单一的对象,或者类型比较少的时候,使用工厂模式来创建对象可以解决一类问题。
还可以通过一个总的工厂,来创建多个工厂,然后多个工厂负责创建相应的实例,有点类似我们平时说的目录结构似的。
使用场景:大家都知道,对于管理信息系统(MIS)开发,都离不开数据库操作。
但是对于数据库在操作过程中,目前市场上提供的数据库有,sqlserver ,access ,mysql ,oracle 等数据库。
但是对于一个完善的[MIS]系统来说,应该使用多种数据库。
所以我们就会想到用工厂模式。
我们可以在项目中新建一个database_factory类。
而这个类的功能就是根据需要创建各种各样的数据库连接类型。
这个对于.Net 的学生来说已经相当的熟悉了。
这就是著名的基于工厂模式的三层架构模式。
看来我们已经在无形中使用了工厂模式了。
第二,单例模式模式特点:作为对象的创建模式,单例模式确保某个类只有一个实例,而且自行实例化,并向系统提供这个实例,如果一个类称为单例类。
它有以下三个要点:一,只能有一个实例二,自行创建这个实例三,自行向系统提供这个实例使用场景:大家都知道,我们的操作系统对有些硬软件的管理是有严格限制的。
例如多个系统共享一个打印机。
此时我们必须是用单例模式来模拟这个过程。
还有就是著名的售票系统,对于所有售票点的票,这个资源我们必须是只能声明一个对象来管理。
如果每个代售点都声明了一个票资源的类,我们在售票的时候一定会出现种种可笑的情况。
在这种情况下我们必须是用单例模式。
第三,组合模式模式特点:组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们在树型结构的问题中模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。
使用场景组合模式让你可以优化处理递归或分级数据结构。
有许多关于分级数据结构的例子,使得组合模式非常有用武之地。
关于分级数据结构的一个普遍性的例子就是你每次使用电脑时所遇到的:文件系统。
文件系统由目录和文件组成。
每个目录都可以装内容。
目录的内容可以是文件,也可以是目录。
按照这种方式,计算机的文件系统就是以递归结构来组织的。
如果你想要描述这样的数据结构,那么你可以使用组合模式Composite Pattern。
其次,我们要掌握设计模式的选取策略现有的软件设计模式一般应用于以下2 个方面:1、在软件设计的开始阶段就应用设计模式对软件体系结构进行设计。
2、在系统的体系结构设计初步完成后,对系统另有要求的组件或模块通过加入设计模式使其更加优化、灵活。
由于设计模式具有一定的复杂性,所以很难将其应用到具体的软件。
设计模式中,主要原因有两点:①软件设计人员没有正确把握和理解软件设计模式; ②没有一种有效的方法来指导使用这些设计模式,为此在此提出了设计模式应用于软件设计的策略,步骤如下.步骤1: 对所要解决的问题进行抽象,并划分适当的类型。
步骤2: 根据问题类型选择适合的设计模式。
步骤3: 规划问题和匹配模式,即将所要解决的问题与所选择的设计模式进行比较,找出共性.在所要解决的问题域内考虑元素对应于模式中的类和模式中的各种角色,如果发现选择的设计模式并不合适,返回步骤3,重新进行设计。
步骤4: 对选取的模式进行变体,即对模式的原始结构进行修改或扩展,以解决具体问题。
步骤5: 设计并细化所需的软件体系结构。
步骤6: 对设计质量进行度量。
再次,我们要灵活运用书中提到的设计模式近年来,大家都开始注意设计模式。
那么,到底我们为什么要用设计模式呢?这么多设计模式为什么要这么设计呢?说实话,以前我还真没搞清楚。
就是看大家一口一个"Design pattern",心就有点发虚。
于是就买了本"四人帮"的设计模式,结果看得似懂非懂:看的时候好像是懂了,过一会就忘了,可能是本人比较"愚钝"吧。
设计模式的概念有时候我们是真的能看懂,并且能理解,但之后却不知道应该如何用它,或者觉得自己的项目好像不需要,或不知把它用在哪里......因为缺乏一些项目经验的问题.实际上我觉得学习设计模式还是要自己单独去开发一些项目,而不要刻意去看!。