Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie

前言

在编程过程中总结归纳出来的一种编程经验,从而形成的设计思想称为设计模式。

设计模式有23种。它适用于所有的编程语言。

常用的有创新型的设计模式:简单工厂、抽象工厂和单例模式;行为型的设计模式:模板设计模式、观察者模式和命令模式;结构性的设计模式:适配器设计模式、代理模式(静态和动态两种,典型的有在spring的AOP编程中使用)和装饰器设计模式。

正文

单例模式(singleton)

保证一个类在内存中只能创建一个实例。

1.实现步骤:

1)将构造器私有化,即使用private修饰构造器

2)提供静态私有的属性,类型为要创建的对象类型。

3)提供一个返回在类内部创建的对象的静态方法。

注:

1.饱汉式的单例模式是等到外界第一次请求对象时才创建对象。

应用场景:对象比较小,创建过程消耗的时间少。

饱汉式是典型的时间换取空间。

饱汉式代码示例:

2.饿汉式是当程序一启动就立即产生对象加载到内存中。

应用场景:对象比较大,创建过程消耗的时间多。

饱汉式是典型的空间换取时间。

饿汉式代码示例:

简单工厂

对调用者封装对象的创建过程,提供产品。

使用工厂封装对象的创建过程。

1.实现步骤:

1)定义接口规范。

该接口是工厂中创建的对象必须实现的接口。

定义接口的方法时,避免体系技术的特点;比如:对于数据库的操作,避免在接口中适应SQLException.

2)定义实现类

该类是工厂需要创建的对象的模板,实现定义的接口。

3)构建工厂:采用抽象类

在工厂类中提供一个静态方法,方法的返回值类型为接口类型,用于动态绑定工厂中生产出得各种对象。

2.应用场景:

根据用户的不同需要产生不同的对象,这些对象都是同一类型的,且具有相同的行为

3.作用

能适应不同的用户的不同需求,根据不同的需求产生对应的对象,达到屏蔽对象的创建过程的目的。

4.简单工厂与放射结合使用的实现步骤

1)定义接口

2)提供具体的实现类

3)提供配置文件

配置类的基本信息:key="类的全限定名"

4)提供工厂类的实现

根据配置文件信息,通过外界传来的key,获取对应的全限定名。

代码示例:

抽象工厂

抽象工厂用于不同产品的实现;比如一些易于交换产品系列,它们只需改变具体工厂即可。

例如:一个开发中可能有mySql的数据库和oracle的数据库。

1.具体示例步骤:

1)定义接口

定义访问数据库的方法

IOrderDao-->addOrder方法//用户访问方式

IUserDao-->addUser方法////订单的访问方式

注:

访问数据库的方式与数据库产品无关,只和业务有关。

2)提供接口的实现:抽象产品的具体分类实现

不同的数据库产品他的操作方式不同

1))针对oracle的实现

OracleUserDaoImpl implements IUserDao

OracleOrderDaoImpl implements IOrderDao

2))针对mySql的实现MySqlUserDaoImpl implements IUserDao

MySqlOrderDaoImpl implements IOrderDa

3)提供抽象工厂类

该类应该包含所有的创建数据库产品的工厂的抽象方法

4)针对不同的数据库产品提供数据库的工厂

5)测试:通常在运行时刻创建一个ConcreteFactory类的实例

DaoFactory daoFacotry=DaoFactory.getInstance("mysql");

UserDao userDao=daoFactory.getUserDao();

注:

创建具体的工厂,再创建具有特定实现的产品对象。也就是说,为了创建不同的产品对象,客户端应使用不同的具体工厂。

模板设计模式(Template)

在一个类中定义操作的骨架,细节交给子类完成

 开发步骤:

1.定义一个抽象类

|-定义算法的骨架(方法实现的半成品)

|-定义一个抽象方法由抽象类当中的实例方法调用同时交给子类来实现。

应用场景:

jdbc操作数据库的更新与删除

原理:

子类重写父类的方法

定义算法框架在一个方法里,某些步骤推迟到子类。模板方法设计模式让子类定义算法的某些步骤,而不需要改变算法的结构。

代码示例:

2)抽象类的骨架

1)子类实现骨架的某些步骤

装饰器设计模式(decorator)

1.意图在运行时通过组合操作产生新的变化。IO流中的输入输出就是一个典型案例

装饰器动态的给对象增加职责。装饰器提供了一个比继承更好地弹性的方案。

代码示例:

2.装饰者可以在被委托的对象之前或之后,把它的行为加上,以便完成剩下的任务。

当然,它的缺点是造成大量的小类

3.原理:装饰器为被装饰器提供装饰的原料。

举例:节点文件流是装饰器,文件流获取的数据来填充缓冲流中的缓冲池,文件中的数据来修饰缓冲池。

代码示例:

1)类结构

2)Person接口

3)Man实现了

4)Decorator适配器类

5)适配器的子类DecA

6)适配器的子类DecB

7)测试类

适配器设计模式(adapter)

经常使用一些support或adapter的单词来表示适配器的类。

在jdk的swing中的事件监听器应用了该设计模式。

1.使原来由于接口不兼容的类在一起协同工作

代码示例:a类和b类的接口不兼容,一起协同工作的实例

1)A类的接口

2)A类的代码

3)B类的代码

4)测试类

2.适配器的类

*    |-初始化一些资源,直接提供给子类使用

*    |-子类可以只关心功能,需要实现什么功能重写什么方法

代码示例:

1)接口包含了很多的方法

2)通过继承实现了接口的类,来解决必须重写所有的接口方法的问题

3)子类可以只关心功能,需要实现什么功能重写什么方法

总结

1.简单描述一下其他的设计模式:

1)状态设计模式:允许对象在内部的状态改变时,改变它的行为。达到对象看起来就像修改了它的类的效果。

2)策略模式:定义一组算法家族,封装每个算法并使之可互换。策略模式让客户可以独立地应对算法的变化。

3)观察者模式:定义一对多的关系,当一个对象改变时,所有的依赖者都会自动得到通知和更新。它在jdk中的应用有javaBean和swing。

Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie

时间: 2024-12-27 23:18:15

Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie的相关文章

Android网络编程使用HttpClient访问web站点

HttpClientDemo.java界面就是两个按钮和一个文本框 /* * 用HttpClientlai 来访问提交请求,接收响应 * A,发送GET请求 * 1,创建HttpClient对象:HttpClient httpclient=new DefaultHttpClient(); * 2,发送GET请求,创建HttpGet对象:HttpGet httpget=new HttpGet("http://www.baidu.com"); * 3,用HttpClient对象实行Http

Android网络编程(二)HttpClient与HttpURLConnection

相关文章 Android网络编程(一)HTTP协议原理 前言 上一篇我们了解了HTTP协议原理,这一篇我们来讲讲Apache的HttpClient和Java的HttpURLConnection,这两种都是我们平常请求网络会用到的.无论我们是自己封装的网络请求类还是第三方的网络请求框架都离不开这两个类库. 1.HttpClient Android SDK中包含了HttpClient,在Android6.0版本直接删除了HttpClient类库,如果仍想使用则解决方法是: 如果使用的是eclipse

Android网络编程之使用HttpClient批量上传文件

请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP访问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友可以去看一下.在这里主要介绍如何通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但现在这个类已经不在推荐使用了.随之替代它的类是MultipartEntityBuilder. 下面

Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听

请尊重他人的劳动成果,转载请注明出处: Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听 运行效果图: 我曾在<Android网络编程之使用HttpClient批量上传文件>一文中介绍过如何通过HttpClient实现多文件上传和服务器的接收.在上一篇主要使用Handler+HttpClient的方式实现文件上传.这一篇将介绍使用AsyncTask+HttpClient实现文件上传并监听上传进度. 监控进度实现: 首先

转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder

请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Android网络编程之使用HTTP访问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友可以去看一下.在这里主要介绍如何通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但现在这个类已经不在推

Android网络编程网上文章总结

关于网络编程,网上也有许多好的文章,这里我就选了几篇觉得不错的归纳到了一起,仅供参考 Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包套接字(socket).Internet协议.常见Http处理等.比如:创建URL,以及URLConnection/HttpURLConnection对象.设置链接参数.链接到服务器.向服务器写数据.从服务器读取数

Android网络编程系列 一 TCP/IP协议族

在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必要进一步的了解,这就要我们了解网络通信层了,提到网络通信层不得不说起ISO-OSI的七层协议经典架构,如图所示: 上图的左边部分就是osi架构模型了, ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标

漫谈Android网络编程

Android从业者,十之八九都是在做网络应用,不是互联网也是局域网.如今在4G和Wifi的天下下,流量什么的都已是浮云,单机应用的市场已然悄悄的一去不复返了.所以呢,不了解网络请求的同学要小心了,当心被时代的大浪一个浪头排在沙滩上. Android实现网络编程有HTTP.也有Socket.HTTP协议是应用层协议,主要解决如何包装数据,网络应用都会用到的协议:Socket是TCP/IP协议的封装,主要解决数据如何在网络中传输,常用于与服务器保持长连接,一般用于广告推送.实时聊天.在线游戏等.

Android网络编程(一)HTTP协议原理

相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley使用方法全解析 Android网络编程(四)从源代码解析volley Android网络编程(五)OkHttp2.x使用方法全解析 Android网络编程(六)OkHttp3使用方法全解析 Android网络编程(七)源代码解析OkHttp前篇[请求网络] Android网络编程(八)源代码解析OkHttp后篇[复用