面向对象设计模式
文章平均质量分 86
秃头少女Emily
这个作者很懒,什么都没留下…
展开
-
【行为型模式】访问者模式
访问者模式定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于其内部各个元素的新操作。对象行为型模式访问者模式的优缺点优点1.符合单一职责原则;2.优秀的扩展性,允许对组合结构加入新的操作,而无需改变结构本身。;3.灵活性。缺点1.具体元素对访问者公布细节,违反了迪米特原则;2.具体元素变更比较困难;3.违反了依赖倒置原则,依赖了具体类,没有依赖抽象。适用环境1.对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作;原创 2024-04-23 14:53:42 · 439 阅读 · 0 评论 -
【行为型模式】备忘录模式
备忘录模式定义又称之为快照模式(Snapshop Pattern)或者令牌模式(Token Pattern),是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样我们就可以在需要的时候将该对象恢复到原先保存的状态了。对象行为型备忘录模式有两个目标储存系统关键对象的重要状态;维护关键对象的封装。备忘录模式的优缺点优点1.将被储存的状态放在外面,不要和关键对象混在一起,这可以帮助维护内聚;2.提供了容易实现的恢复能力;3.保持关键对象的数据封装。原创 2024-04-23 14:27:02 · 715 阅读 · 0 评论 -
【行为型模式】中介者模式
中介者模式定义用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。对象行为型模式中介者模式的优缺点优点1.简化了对象之间的交互;2.将各同事解耦;3.减少子类生成;4.可以简化各同事类的设计和实现。缺点在具体中介者类中包含了同事之间的交互细节,可能会导致具体中介者类非常复杂,使得系统难以维护。适用环境1.系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解;原创 2024-04-23 14:13:32 · 757 阅读 · 0 评论 -
【结构型模型】享元模式
享元模式定义又叫蝇量模式,运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。对象结构型模式享元模式的设计一个关键的地方是先要区分内部状态和外部状态内部状态:存储在享元对象内部并且不会随环境改变而改变的状态,内部状态可以共享(例如:字符的内容)外部状态:随环境改变而改变的、不可以共享的状态。原创 2024-04-23 13:48:45 · 905 阅读 · 0 评论 -
【行为型模式】解释器模式
解释器模式定义给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。类行为型解释器模式的优缺点优点1.将每一个语法规则表示成一个类,方便于实现语言;2.因为语法由许多类表示,所以你可以轻易地改变或扩展此语言;3.通过在类结构中加入新的方法,可以在解释的同时增加新的行为,例如打印格式的美化或者进行复杂的程序验证。缺点。原创 2024-04-23 13:19:08 · 956 阅读 · 0 评论 -
【行为型模式】责任链模式
责任链模式定义-意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。发送请求的客户端并不知道链上的哪个对象会处理这个请求,这使得系统在不影响客户端的情况下动态的组织和分配责任。对象行为型职责链可以是一条直线、一个环链或者是一个树结构的一部分。责任链模式的优缺点优点1.降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息;原创 2024-04-23 12:54:37 · 880 阅读 · 0 评论 -
【结构型模式】桥接模式
桥接模式定义通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。不只改变你的实现,也改变你的抽象。对象结构型桥接模式的优缺点优点1.将实现予以解耦,让它和界面之间不再永久绑定;2.抽象和实现可以独立扩展,不会影响到对方;3.对于“具体的抽象类”所做的改变,不会影响到客户。缺点增加了复杂度。适用场景适合使用在需要跨越多个平台的图形和窗口系统上;当需要用不同的方式改变接口和实现时,桥接模式很好用。//抽象化角色//扩展抽象化角色@Override。原创 2024-04-23 12:37:00 · 384 阅读 · 0 评论 -
【行为型模式】状态模式
状态模式的定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。对象行为型)策略模式和状态模式是双胞胎,在出生时才分开。策略模式是围绕可以互换的算法来创建成功业务的。状态模式走的是更崇高的路,它通过改变对象内部的状态来帮助对象控制自己的行为。状态模式的优缺点优点1.可以将不同的状态隔离;2.每个状态都是一个单独的类;3.可以将各种状态的转换逻辑 , 分布到状态的子类中 ,减少相互依赖;4.增加新状态操作简单。缺点。原创 2024-04-22 16:57:29 · 433 阅读 · 0 评论 -
【行为型模型】迭代器模式
迭代器模式定义提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。把游走的任务放在送代器上,而不是聚合上。这样简化了聚含的接口和实现,也让责任各得其所。对象行为型迭代器模式的优缺点优点1.访问一个聚合对象的内容而无须暴露它的内部表示;2.遍历任务交由迭代器完成,这简化了聚合类;3.它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历;4.增加新的聚合类和迭代器类都很方便,无须修改原有代码;5.封装性良好,为遍历不同的聚合结构提供一个统一的接口;原创 2024-04-22 16:20:35 · 1014 阅读 · 0 评论 -
【行为型模式】模板方法模式
模板方法模式定义在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。类对象型模式模板方法中的基本方法是实现算法的各个步骤,是模板方法的组成部分。基本方法又可以分为三种:抽象方法:抽象方法就是在抽象类中声明并由子类实现的方法;具体方法:具体方法可以由抽象类实现,或者由子类覆盖实现;钩子方法:钩子方法可以由抽象类实现,子类可以加以扩展。原创 2024-04-18 21:22:31 · 544 阅读 · 0 评论 -
【行为型模式】命令模式
命令模式的定义将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。对象行为型命令模式优缺点优点1.类间解耦:调用者角色与接收者角色之间没有任何依赖关系,调用者实现功能时只需调用Command 抽象类的execute方法就可以,不需要了解到底是哪个接收者执行。2.可扩展性:Command的子类可以非常容易地扩展,而调用者Invoker和高层次的模块Client不产生严 重的代码耦合。原创 2024-04-18 20:34:12 · 758 阅读 · 0 评论 -
【创建型模式】原型模式
原型(Prototype)模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。对象创建型工作原理将一个原型对象传给要发动创建的对象(即客户端对象),这个要发动创建的对象通过请求原型对象复制自己来实现创建过程。创建新对象(也称克隆对象)的工厂就是原型类自身,工厂方法由负责复制原型对象的克隆方法来实现。原创 2024-04-18 15:41:50 · 1201 阅读 · 0 评论 -
【创建型模式】单例模式
单例模式的定义又叫单件模式,确保一个类只有一个实例,并提供一个全局访问点。要点1.某个类只能有一个实例;2.必须自行创建这个实例;3.必须自行向整个系统提供这个实例。单例模式的优缺点优点:1.提供了对唯一实例的受控访问2.可以节约系统资源,提高系统的性能3.允许可变数目的实例(多例类)缺点:1. 全局变量:单例模式实质上就是全局变量。全局变量可能会被误修改,而且调试困难;2. 并发问题:在多线程环境下,如果没有正确地处理,可能会导致多个实例被创建;原创 2024-04-18 15:11:48 · 769 阅读 · 0 评论 -
【创建型模式】建造者模式
建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同得表示。(对象创建型模式)。建造者模式分析1.将客户端与包含多个部件得复杂对象得创建过程分离,客户端无需知道复杂对象得内部组成部分与装配方式,只需要知道所需建造者得类型即可;2.关注如何逐步创建一个复杂得对象,不同得建造者定义了不同得创建过程。建造者模式的优缺点优点1.客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象;原创 2024-04-18 14:57:03 · 959 阅读 · 0 评论 -
【创建型模式】抽象工厂模式
抽象工厂模式定义提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。模式动机1.当系统提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的具体产品时就可以使用抽象工厂模式;2.抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式。抽象工厂:一个工厂可以生产一系列(一族产品),极大减少了工厂类的数量。又叫做工具模式:抽象工厂模式中的具体工厂不只是创建一种产品,她负责一族产品;原创 2024-04-18 14:05:56 · 931 阅读 · 0 评论 -
【创建型模式】工厂方法模式
简单工厂模式又叫做静态工厂方法模式。目的:定义一个用于创建对象的接口。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式基本实现流程1.具体产品类:将需要创建的各种不同产品对象的相关代码封装到具体产品类中;2.抽象产品类:将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中;3.工厂类:提供一个工厂类用于创建各种产品,在工厂中提供一个创建产品的工厂方法,该方法可以根据所传入参数的不同创建不同的具体产品对象。4.原创 2024-04-17 19:59:09 · 1176 阅读 · 0 评论 -
【结构型模式】代理模式
代理模式的定义-意图:给某一个对象提供一个代理或占位符,并由代理对象来控制来原对象的访问(对象结构型模式)。某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动。代理模式分析1.引入一个新的代理对象;2.代理对象在客户端对象和目标之间起到中介的作用;3.去掉客户不能看到的内容服务或者增添客户需要的额外的新服务。几种代理模式类型1.保护代理(Ptotect Proxy):控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限;2.缓冲代理(CacheProxy)原创 2024-04-17 15:43:13 · 753 阅读 · 0 评论 -
【结构型模式】外观模式
外观模式定义与意图外观类为复杂的子系统提供了一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。(对象结构型模式)外观模式的特点:1.又叫做门面模式;2.是迪米特法则的一种具体实现;3.通过引入一个新的外观角色来降低原有系统的复杂度,同时降低客户类与子系统的耦合度;4.所指的子系统是一个广义的概念,它可以是一个类,一个功能模块,系统的一个组成或者一个完整的系统。外观模式分析:1.一个客户类需要喝多个业务类交互,而这些需要交互的业务类经常会作为一个整体出现。原创 2024-04-17 14:26:09 · 1119 阅读 · 0 评论 -
【结构型模式】组合模式
组合模式的定义与意图将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。(对象结构型)组合模式分析1.当容器对象的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象并调用执行,牵一而动百,其中使用了递归调用的机制来对整个结构进行处理;2.由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户端希望一致地处理它们,因为对于这些对象的区别对待将会使程序非常复杂。原创 2024-04-17 14:04:18 · 805 阅读 · 1 评论 -
【结构型模式】适配器模式
适配器模式的定义-意图将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。(对象结构模式->对象适配器/类结构模式->类适配器)适配器模式包含三个角色:目标(Target)角色、适配者(Adaptee)角色和适配器(Adapter)角色。根据Adapter角色的实现不同,可分为类适配器和对象适配器。类适配器模式(继承也是泛化实现):适配器角色对于被适配角色的适配是通过继承完成的还是通过组合来完成的。原创 2024-04-17 13:37:43 · 1009 阅读 · 0 评论 -
【结构型模式】装饰器模式
装饰器模式(装饰者模式)定义装饰器模式动态地将责任附加到对象上。若要拓展功能,装饰者提供了比继承更有弹性地替代方案。(对象结构型模型)通俗点来说:动态的给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。利用继承来达到“类型匹配”1.装饰者与被装饰对象有相同地超类型;2.可以用一个或多个装饰者包装一个对象;3.既然装饰者与被装饰对象有相同地超类型,所以在任何需要原始对象(被包装地)的场合,可以用装饰过的兑现代替它;原创 2024-04-16 19:43:20 · 1153 阅读 · 0 评论 -
【行为型模式】策略模式
策略模式(又叫政策Policy模式),属于对象行为模式下的:Strategy类提供了可插入式(Pluggable)算法的实现方案。策略模式的定义-意图:定义一系列算法,将每一个算法封装起来,并让它们互相替换。策略模式让算法可以独立于使用它的客户变化。模式策略的优缺点优点1.提供了对开闭(开时针对扩展功能是开放的,闭对修改功能是关闭的)原则的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为;2.提供了管理相关的算法族的办法;原创 2024-04-16 18:30:35 · 1118 阅读 · 0 评论 -
【行为型模式】观察者模式
一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,他们之间将产生联动。观察者模式1.定义了对象之间一种一对多的依赖关系,让一个对象的改变能够影响其他对象。2.发生改变的对象称为观察目标,被通知的对象成为观察者。3.一个观察目标可以对应多个观察者。别名:发布-订阅(Public/subscribe)模式,模型-视图(Model/View)模式,源-监听器(Source/Listener)模式,从属者(Dependents)模式。原创 2024-04-16 15:42:44 · 1234 阅读 · 0 评论 -
面向对象设计模式之概念
又叫做最少知识原则(LKP),每一个软件单位对其他的单位都只是最少的知识,而且局限于那些与本单位密切相关的软件。(也叫最少知道原则,为了模块间低耦合)原创 2024-04-16 15:03:10 · 1633 阅读 · 2 评论