- 工厂模式
- 简介
好处:增加了创建对象时的封装层次。如果你使用工厂来创建对象,之后你可以使用更高级和更高性能的实现来替换原始的产品实现或类,这不需要在调用层做任何修改。 - 简单工厂模式:工厂、抽象产品、具体产品
一个工厂类,封装子类的创建,根据传入参数创建不同的实例。
适用场景:(1)需要创建的对象较少。(2)客户端不关心对象的创建过程。 - 工厂方法模式
每个子类有对应的工厂类,实例化具体哪个类延迟到子类实现。
适用场景:(1)客户端不需要知道它所创建的对象的类。例子中我们不知道每个图片加载器具体叫什么名,只知道创建它的工厂名就完成了创建过程。(2)客户端可以通过子类来指定创建对应的对象。
优点:当有新的产品产生时,只要按照抽象产品角色、抽象工厂角色提供的合同来生成,那么就可以被客户使用,而不必去修改任何已有的代码。(即当有新产品时,只要创建并基础抽象产品;新建具体工厂继承抽象工厂;而不用修改任何一个类)工厂方法模式是完全符合开闭原则的。
步骤:
步骤1:创建抽象工厂类,定义具体工厂的公共接口;
步骤2:创建抽象产品类 ,定义具体产品的公共接口;
步骤3:创建具体产品类(继承抽象产品类) & 定义生产的具体产品;
步骤4:创建具体工厂类(继承抽象工厂类),定义创建对应具体产品实例的方法;
步骤5:外界通过调用具体工厂类的方法,从而创建不同具体产品类的实例 - 抽象工厂模式
产品族和产品等级:
针对产品族,可以增加新产品族但不方便修改原有产品,不符合开放封闭原则。
步骤:
步骤1: 创建抽象工厂类,定义具体工厂的公共接口;
步骤2: 创建抽象产品族类 ,定义抽象产品的公共接口;
步骤3: 创建抽象产品类 (继承抽象产品族类),定义具体产品的公共接口;
步骤4: 创建具体产品类(继承抽象产品类) & 定义生产的具体产品;
步骤5:创建具体工厂类(继承抽象工厂类),定义创建对应具体产品实例的方法;
步骤6:客户端通过实例化具体的工厂类,并调用其创建不同目标产品的方法创建不同具体产品类的实例
总结:
-
HTTP/HTTPS
一次完整的HTTP请求步骤:
1 对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
2 根据这个IP,找到对应的服务器,发起TCP的三次握手
3 建立TCP连接后发起HTTP请求
4 服务器响应HTTP请求,浏览器得到html代码
5 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)(先得到html代码,才能去找这些资源)
6 浏览器对页面进行渲染呈现给用户
7 服务器关闭关闭TCP连接GET VS POST
- get 方法一般用于请求,比如你在浏览器地址栏输入 www.cxuanblog.com 其实就是发送了一个 get 请求,它的主要特征是请求服务器返回资源,而 post 方法一般用于 表单的提交
- 为什么POST效率低,Get效率高
Get将参数拼成URL,放到header消息头里传递
Post直接以键值对的形式放到消息体中传递。
-
java异常
java异常常见问题 -
override, overload要求
重载:
在当前类:方法名必须相同,返回值类型没有任何关系,方法的参数一定不相同。
重写:
三同一不低。子类和父类的方法名,返回值类型 参数列表全部必须相同。子类的方法修饰符权限不能比父类低。