
设计模式
文章平均质量分 64
源 码
面向IT面向君,不负代码不负卿。
展开
-
设计模式:责任链模式 详解
又名职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对 象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处 理它为止。原创 2022-09-17 01:53:04 · 79 阅读 · 0 评论 -
设计模式:策略模式详解
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用 算法的客户。,它通过对算法进行封装,把使用算法的责任和算法的实现分 割开来,并委派给不同的对象对这些算法进行管理。增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合“开闭原 则“策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。由于策略类都实现同一个接口,所以使它们之间可以自由切换。客户端必须知道所有的策略类,并自行决定使用哪一个策略类。原创 2022-09-16 22:50:34 · 126 阅读 · 0 评论 -
设计模式:模板方法模式详解
去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评 分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但 是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步 骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的 环境相关。基本方法:是实现算法各个步骤的方法,是模板方法的组成部分。原创 2022-09-16 17:37:27 · 110 阅读 · 0 评论 -
设计模式:迭代器模式 详解
通常包含 hasNext()、 next() 等方法。,完成对聚合对 象的遍历,记录遍历的当前位置。抽象聚合(Aggregate)角色:定义。抽象迭代器(Iterator)角色:定义。而不暴露聚合对象的内部表示。原创 2022-09-14 17:22:53 · 162 阅读 · 0 评论 -
设计模式:观察者模式 详解
Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每 个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,在具 体主题的内部状态发生改变时,给所有注册过的观察者发送通知。Observer:抽象观察者,是观察者的抽象类,它定义了一个更新接口,使得在得到主题更改通知 时更新自己。如果观察者非常多的话,那么所有的观察者收到被观察者发送的通知会耗时。原创 2022-09-13 22:42:46 · 407 阅读 · 0 评论 -
设计模式:装饰者模式 详解
抽象装饰(Decorator)角色 : 继承或实现抽象构件,并包含具体构件的实例,可以通过其子 类扩展具体构件的功能。具体装饰(ConcreteDecorator)角色 :实现抽象装饰的相关方法,并给具体构件对象添加附 加的责任。具体构件(Concrete Component)角色 :实现抽象构件,通过装饰角色为其添加一些职责。,可以通过组合不同的装饰者对象 来获取具有不同行为状态的多样化的结果。装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的。的附加责任,装饰者则是。5.3.4 使用场景。原创 2022-09-13 02:08:31 · 83 阅读 · 0 评论 -
适配器模式:类适配器模式 对象适配器模式 详细讲解
适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成 目标接口,让客户按目标接口的格式访问适配者。实现方式:定义一个 适配器类 来实现当前系统的业务接口(目标接口),同时又继承现有组件库中已经存在的组件(适配者类)。目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。以前开发的系统存在满足新系统功能需求的类,但其接口同新系统的接口不一致。适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。,所以应用相对较少些。原创 2022-09-11 17:40:22 · 956 阅读 · 0 评论 -
代理模式详细讲解
唯一需要注意的是,CGLib不能对声明为final的类或者 方法进行代理,因为CGLib原理是动态生成被代理类的子类。Java中的代理按照代理类生成时机不同又分为。Java中提供了一个动态代理类 Proxy,Proxy并不是我们上述所说的代理对象的类,而是提供了一个。代理(Proxy)类 : 提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访 问、控制或扩展真实主题的功能。真实主题(Real Subject)类: 实现了抽象主题中的具体业务,是代理对象所代表的真实对 象,是最终要引用的对象。原创 2022-09-08 23:07:34 · 394 阅读 · 0 评论 -
设计模式:建造者模式
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。一些基本部件不会变,而其组合经常变化的时候。将变与不变分离开。建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。原创 2022-09-07 16:38:35 · 82 阅读 · 0 评论 -
单例模式:懒汉式 饿汉式 双检锁 登记式 枚举式 详细讲解
保证一个类仅有一个实例,并提供一个访问它的全局访问点。一个全局使用的类频繁地创建与销毁。当您想控制实例数目,节省系统资源的时候。判断系统是否已经有这个单例,如果有则返回,如果没有则创建。关键代码:构造函数是私有的。1、一个班级只有一个班主任。2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。原创 2022-09-06 18:24:36 · 851 阅读 · 1 评论 -
工厂模式:工厂方法模式和抽象工厂模式 详细讲解
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决接口选择的问题。我们明确地计划不同条件下创建不同实例时。让其子类实现工厂接口,返回的也是一个抽象的产品。创建过程在其子类执行。1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。2、Hibernate 换数据库只需换方言和驱动就可以。1、一个调用者想创建一个对象,只要知道其名称就可以了。2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。原创 2022-09-05 17:26:24 · 260 阅读 · 0 评论 -
设计模式-概述. 类图.软件设计原则详细讲解
直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面 向对象软件的基础》一书,在此书中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致 了软件设计模式的突破。从父类继承而来的实现是静态的,在编译时已经定义,所以在运行时不可 能发生变化。父类的实现的任何改变都会导致子类的实现发生变化,这不利于类的扩展 与维护。原创 2022-09-02 20:43:18 · 565 阅读 · 0 评论