java设计模式

目录

1、面向对象设计原则

设计模式的类型

创建型

1、工厂模式

简单解读:

2、单例模式

单例模式的优势

模式:

简单解读:

应用场景

3、原型模式

4、构建者模式

结构型

1、适配器模式

类设配器

对象适配器

接口适配器

2、装饰者模式

简单解读

模式

3、代理模式

代理模式与装饰者模式区别:

行为型

1、模板方法模式

2、策略模式


1、面向对象设计原则

设计原则名称定 义原则要求
单一职责原则一个类只负责一个功能领域中的相应职责【类职责单一】
开闭原则软件实体应对扩展开放,而对修改关闭【对扩展开放,对修改关闭】
里氏代换原则所有引用基类对象的地方能够透明地使用其子类的对象【不要破坏继承体系】
依赖倒转原则抽象不应该依赖于细节,细节应该依赖于抽象【面向接口编程】
接口隔离原则使用多个专门的接口,而不使用单一的总接口【接口要精简单一】
合成复用原则尽量使用对象组合,而不是继承来达到复用的目的【优先使用组合或者聚合关系复用,少用继承关系复用】
迪米特法则个软件实体应当尽可能少地与其他实体发生相互作用【降低耦合度】

设计模式的类型

总体来说,设计模式分为 三类 23
创建型( 5 种) 工厂模式、抽象工厂模式、单例模式、原型模式、构建者模式
结构型( 7 种) 适配器模式、装饰模式、代理模式 、外观模式、桥接模式、组合模式、享元模式
行为型( 11 种) 模板方法模式、策略模式 、观察者模式、中介者模式、状态模式、责任链模式、 命令模式、迭代器模式、访问者模式、解释器模式、备忘录模式

创建型

1、工厂模式

简单解读:

A、定义一个抽象的类,包括工厂方法,
B、不同的工厂继承该抽象类,实现具体的工厂方法
如果有新工厂加入,只需要新增实现类即可

2、单例模式

单例模式的优势

1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。

模式:

1、饿汉模式:延迟加载方式(推荐)
实现方式:双重检查锁,内部静态类,枚举
2、懒汉模式:立即加载

简单解读:

一个单例类,有一个内部的静态变量(静态内部类的静态变量),构造方法必须是私有的(不能被new实例化),对外暴露一个获取该实例的方法用以创建实例 ,保证实例不会被重复创建 从而实现单例的模式

应用场景

1、Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源

2、数据库连接池

3、多线程的线程池

4、HttpApplication 也是单位例的典型应用

特点:资源共享

3、原型模式

原型模式就是用来进行对象复制的。省掉了堆内存一些复杂的处理流程。对象复制分为两种情况:深拷贝和浅拷贝
浅拷贝:复制的只是引用而不是对应的对象。
深拷贝:将对象中的所有信息,都完全复制一份
简单解读:
1、实现Cloneable 类,重写 clone 方法,
2、实现动态创建对象,便于代码的维护与扩展
3、直接操作内存中的二进制流,性能较好

4、构建者模式

构建者模式和工厂模式很类似,区别在于构建者模式是一种个性化产品的创建。而工厂模式是一种标准化的产品创建。

结构型

1、适配器模式

类适配器

1、有一个Source类,拥有一个方法,待适配,

2、目标接口是Targetable,原类方法定义 + 新方法

3、通过Adapter类,将Source的功能扩展到Targetable里,(适配类继承SOurce ,然后实现Targetable接口,实现新方法,这样就适配了原始方法)

对象适配器

与类适配器相似,第三步修改

3、只是将Adapter类作修改,这次不继承Source类,而是持有Source类的实例。

接口适配器

接口的适配器是这样的:有时我们写的一个接口中有多个抽象方法,当我们写该接口的实现类时,必须实现该接口的所有方法,这明显有时比较浪费,因为并不是所有的方法都是我们需要的,有时只需要某一些,此处为了解决这个问题,我们引入了接口的适配器模式,借助于一个抽象类,该抽象类实现了该接口,实现了所有的方法,而我们不和原始的接口打交道,只和该抽象类取得联系,所以我们写一个类,继承该抽象类,重写我们需要的方法就行。

2、装饰者模式

简单解读

装饰模式就是给一个对象增加(装饰)一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,

模式

1. 需要扩展一个类的功能。

2. 动态的为一个对象增加功能,而且还能动态撤销。

3、代理模式

代理模式就是多一个代理类出来,替原对象进行一些操作。代理又分为动态代理和静态代理

代理模式与装饰者模式区别:

装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。并且,当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。

行为型

1、模板方法模式

父类去抽取共性的方法操作:一般父类去制定方法的操作步骤,比如说把大象装冰箱分几步子类去实现复杂的特性的功能

2、策略模式

在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。
 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
2、一个系统需要动态地在几种算法中选择一种。        
3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值