设计模式总结(二)

设计模式可分为三种:创建型设计模式。结构型设计模式和行为型设计模式。

一、创建型设计模式

在设计模式中,创建型设计模式处理对象创建过程的设计模式。它依据实际情况来决定详细如何创建对象。

创建型模式隐藏了类的实例是如何创建和放在一起,整个系统关于对象所知道的是由抽象类所定义的接口。这样创建模式在创建了什么、谁创建它、怎么被创建的。以及何时创建这些方面提供了非常大的灵活性。

创建型设计模式又分为类创建型模式和对象创建型模式:类创建型模式是将对象的创建推迟到子类中;而对象创建型模式是将对象创建的一部分推迟到子类中。

创建型设计模式增强了对象与类之间的独立性。

创建型设计模式一般用于一下情况:

1.系统和对象的创建相互独立

2.一组相关的对象设计为一起使用

3.隐藏类库的实现过程。仅仅需显示它的接口

4.创建独立复杂对象的不同表示

5.子类实现类所创建的对象

6.在执行时实现类的实例化

7.实例在不改动的情况下具有扩展性

8.一个类仅仅能有一个实例,且这个实例能在不论什么时候被訪问

二、结构型设计模式

机构型设计模式是描写叙述怎样组合对象以获得一个更大的结构。不是对接口和实现的组合。它是从程序的结构式解决模块之间的耦合问题。

结构型设计模式对对象进行组合以获取更大结构的方法包含:统一、概括和分离

1.统一:达到一致

统一描写叙述了对象组合的一个主题。通过统一便于用户的使用和扩展。在结构模式中能够归入该主题的有适配器模式和组合模式。

2.概括:提高抽象

概括是对一些对象进行抽象和提取然后提供给用户使用。这样既便于用户的使用又便于对底层的被概括对象进行扩展和维护,在结构模式中能够归入该主题的模式有外观模式。

3.分离:减少耦合。便于扩展

分离能够说是非常多模式的一个主题。不光是结构型模式。创建型模式中也有大量以分离为主题的设计模式。通过分离能够解耦关联增强对象间的独立。在结构模式中可归入该主题的模式有桥接模式、装饰器模式、享元模式和代理模式。

三、行为型设计模式

行为型模式设计到算法和对象间的职责分配。不仅描写叙述对象或类的模式,还描写叙述它们之间的通信方式,刻划了执行时难以跟踪的复杂的控制流,它们将你的注意力从控制流转移到对象间的关系上来。

行为型类模式採用继承机制在类间分派行为;行为对象模式使用对象复合而不是继承。一些行为对象模式描写叙述了一组相互对等的对象怎样相互协作以完毕当中不论什么一个对象都单独无法完毕的任务;其他的行为对象模式常将行为封装封装在一个对象中,并将请求指派给它。

时间: 2024-10-22 17:23:17

设计模式总结(二)的相关文章

Java设计模式(二)-单例模式

单例模式建议保证某个对象仅仅只有一个实例,当只有一个对象来协调整个系统的操作时,在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例,总之,选择单例模式就是为了避免不一致状态,避免政出多头. 下面是单例模式的类图:包括的private和static修饰的实例instance.一个private的构造函数.一个static的getInstance函数 单例模式主要有三种:懒汉式单例.饿汉式单例.登记式单例三种 1.饿汉式单例:在类的初始化时候,自行创建了实例 c

设计模式(二)学习----动态代理

动态代理:动态代理是指在实现阶段不需要关心代理谁,而在运行阶段才指定代理哪一个对象.Spring AOP采用的核心思想就是动态代理设计模式.  下面看动态代理的UML类图: 下面思考问题:invocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的? 动态代理类: package com.lp.ecjtu.DynamicProxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect

IOS设计模式之二(门面模式,装饰器模式)

本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq)翻译,如果你发现有什么错误,请与我联系谢谢. 门面(Facade)模式(译者注:facade有些书籍译为门面,有些书籍译为外观,此处译为门面) 门面模式针对复杂的子系统提供了单一的接口,不需要暴漏一些列的类和API给用户,你仅仅暴漏一个简单统一的API. 下面的图解释了这个概念: 这个API的使用者

云计算设计模式(二十四)——仆人键模式

云计算设计模式(二十四)——仆人键模式 使用一个令牌或密钥,向客户提供受限制的直接访问特定的资源或服务,以便由应用程序代码卸载数据传输操作.这个模式是在使用云托管的存储系统或队列的应用中特别有用,并且可以最大限度地降低成本,最大限度地提高可扩展性和性能. 背景和问题 客户端程序和网络浏览器经常需要读取和写入文件或数据流,并从一个应用程序的存储空间.通常,应用程序将处理的运动数据,或者通过从存储读取它,并将其传输到客户端,或通过从客户机读取该载流并将其存储在数据存储中.然而,这种方法吸收了宝贵的资

设计模式(二)---工厂方法模式

设计模式(二)---工厂方法模式 工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品. 抽象工厂源代码 public interface Creator { /** * 工厂方法 */ public Product factory(); } 抽象产品

设计模式 ( 十二 ) 职责链模式(Chain of Responsibility)(对象行为)

 设计模式(十二)职责链模式(Chain of Responsibility)(对象行为型) 1.概述 你去政府部门求人办事过吗?有时候你会遇到过官员踢球推责,你的问题在我这里能解决就解决.不能解决就推卸给另外个一个部门(对象).至于究竟谁来解决问题呢?政府部门就是为了能够避免屁民的请求与官员之间耦合在一起,让多个(部门)对象都有可能接收请求,将这些(部门)对象连接成一条链,而且沿着这条链传递请求.直到有(部门)对象处理它为止. 样例1:js的事件浮升机制 样例2: 2.问题 假设有多个对象都有

云计算设计模式(二十一)——Sharding分片模式

云计算设计模式(二十一)——Sharding分片模式 将一个数据存储到一组水平分区或碎片.存储和访问大量数据时,这个模式可以提高可扩展性. 背景和问题 由一个单一的服务器托管的数据存储区可能会受到以下限制:•存储空间.一种数据存储为一个大型云应用可以预期含有数据量巨大,可以随着时间的推移显著增加.服务器通常提供的磁盘存储仅是有限的,但它可以是能与较大的取代现有的磁盘,或者添加另外的磁盘的机器作为数据量的增加.然而,由此,不能够容易地增加一个给定的服务器上的存储容量的系统最终将达到一个硬限制.•计

云计算设计模式(二十)——调度程序代理管理者模式

云计算设计模式(二十)——调度程序代理管理者模式 协调一系列在分布式服务集和其他远程资源的的行为,试图透明地处理故障,如果这些操作失败,或撤销,如果系统不能从故障中恢复执行工作的影响.这种模式可以分布式系统中增加弹性和灵活性,使之恢复和重试失败是由于短暂的异常,持久的故障和处理故障等操作. 背景和问题 应用程序执行其包括多个步骤,其中的一些可以调用远程服务或访问远程资源的任务.各个步骤可以是相互独立的,但它们是由实现该任务的应用程序逻辑编排. 只要有可能,应用程序应该确保任务运行完成和解决远程访

云计算设计模式(二十三)——Throttling节流模式

云计算设计模式(二十三)——Throttling节流模式 控制由应用程序使用,一个单独的租户或整个服务的一个实例的资源的消耗.这种模式可以允许系统继续运行并满足服务水平协议,即使当增加需求的资源放置一个极端载荷. 背景和问题 在云应用负载通常上变化的基础上的活动用户的数量或他们正在执行的活动类型的时间.例如,多个用户可能会在工作时间被激活,否则系统可能被要求在每月结束时执行计算昂贵的分析.也有可能是突然和意外的突发活动.如果系统的处理要求超过了可用的资源的能力,其将遭受性能不佳,甚至会失败.该系

设计模式系列二(策略者模式)

浑浑噩噩的过的漫无目的,更多的是迷茫,真不知该如何定位自己的人生?空有远大抱负,而又力不从心!有句话说的好,当你的才能撑不起你的野心的时候,就该静下来心来好好学习了!于是闲来无事,便继续开始我的设计模式之游!今天便研究下策略者模式! 1.策略者模式解析 大话设计模式是这样讲道: 策略者模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法减少各种算法类与使用算法类之间的耦合[DPE]. 个人理解:所谓一系列算法方法就是一系列