24种设计模式简介
总体来说设计模式分为三⼤类:
创建型模式,共五种:⼯⼚⽅法模式、抽象⼯⼚模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
⾏为型模式,共⼗⼀种:策略模式、模板⽅法模式、观察者模式、迭代器模式、职责链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
还有两类:并发型模式和线程池模式
1.简单⼯⼚模式
⾯对的问题:在创建多个实例时,如果有if...语句的话,不但使源代码显得冗长,⽽且如果增加实例,必须修改if else 代码,造成扩展和修改不灵活,
解决的⽅法:将构造实例的任务交给⼀个⼯⼚类来完成,根据传⼊的不同值来构造不同的实例。
2.⼯⼚⽅法模式
⾯对的问题:简单⼯⼚模式是将创建实例的代码写到了⼀个⼯⼚类中,导致了⼯⼚类职责过多,如果增加或者减少实例时,就需要修改⼯⼚类,违背了开闭原则。
解决⽅法:所有的⼯⼚⽅法都继承⼀个抽象的⼯⼚类,如果增加实例的话,增加⼀个具体⼯⼚类就⾏。通过修改配置⽂件来控制⽣成的具体⼯⼚⽅法,来⽣成实例。
3.抽象⼯⼚模式
⾯对的问题:⼯⼚⽅法中,⼀个⼯⼚只能得到⼀个对象,为了使⼀个⼯⼚能得到多个对象,
解决⽅法:在抽象⼯⼚和具体⼯⼚中增加多个⽅法来得到多个对象,将⽣成的对象也进⾏抽象,建⽴抽象类,
4.建造者模式
解决的问题:为了将部件和组装过程分开,
5.原型模式
解决的问题:快速的多次创建同⼀个对象,
6.单例模式
解决的问题:⼀个系统中只能有且只有⼀个某个类的实例
解决⽅法:创建静态的⽅法来返回唯⼀实例,
7.适配器模式
解决的问题:原本由于接⼝不兼容⽽不能⼀起⼯作的那些类可以在⼀起⼯作
解决⽅法:建⽴适配器类来完成接⼝的相互调⽤
8.桥接模式
为了将抽象部分与实现部分分离,将类进⾏抽象化,⽤抽象化的来,之后再根据需要来实例需要的实现类
9.组合模式
将多个对象组合成⼀个树形结构,定义⼀个抽象的控件类,具有叶⼦和容器的所有功能,叶⼦和容器都继承于它,都过设置容器⾥包含的控件来实现将多个对象组合成树形,
10.装饰模式
为了动态的给⼀个对象增加额外的⽅法,通过 继承和关联 对⼀个对象附加功能,
11.外观模式
对系统的访问 通过⼀个统⼀的⼀个外观对象,是系统更容易使⽤,
12.享元模式
通过共享技术来减少对象的重复创建,是系统对对象进⾏服⽤,减少系统的开销,提⾼性能,将对象写⼊哈希表中,从哈希表中得到对象,以实现重复使⽤对象的⽬的
13.代理模式
⼀个对象可以直接引⽤⼀个对象,为了使添加⽅法⽅便,现在通过调⽤使⽤代理类来间接的调⽤对象
14.职责链模式
避免请求发送者与接收者耦合在⼀起,将对象连接成为⼀条链,请求沿着这条链传递,直到有对象处理它为⽌。
15.命令模式
将⼀个请求封装为⼀个对象(即我们创建的Command对象),从⽽使你可⽤不同的请求对客户进⾏参数化; 对请求排队或记录请求⽇志,以及⽀持可撤销的操作。
16.解释器模式
给定⼀个语⾔,定义它的⽂法的⼀种表⽰,并定义⼀个解释器,这个解释器使⽤该表⽰来解释语⾔中的句⼦。
17.迭代器模式
类提供⼀个⽅法来访问聚合对象,不⽤暴露对象的信息,来遍历对象,
18.中介者模式
通过⼀个中介者对象来完成多个对象之间的交互,
19.备忘录模式
储存对象的历史状态,以备恢复对象的状态
20.观察者模式
当⼀个对象发⽣变化是另⼀个对象也要发⽣变化,⽤观察者来观察对象的变化来通知另⼀个对象更新
21.状态模式
对象可以拥有多个状态 通过改变类来实现状态的变化
22.策略模式
将每个算法封装起来,使他们可以互换
23.模板⽅法模式
定义⼀个算法的⾻架,具体的实现在⼦类中完成,
24.访问者模式
封装某些作⽤于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作⽤于这些元素的新的操作单例模式的几种实现方式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论