设计模式
文章平均质量分 88
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
呆萌宝儿姐
CSDN专家博主、阿里云开发者社区专家博主、51CTO社区专家博主、360书馆认证博主、知乎掘金B站等平台受邀作者。
如遇开发、程序等需求,博客首页下拉加入公众号,私信博主
展开
-
理解 Facade 模式:简化复杂系统的门面设计模式
Facade 模式,又称为门面模式,是一种结构性设计模式,旨在为客户端提供一个简化的接口,以便访问复杂系统的一组子系统。这个模式属于 GoF(Gang of Four)设计模式之一,它的核心思想是将系统的复杂性封装在一个外观(Facade)类中,使客户端可以通过与外观类交互来访问系统的功能,而不必了解底层子系统的复杂性。简而言之,Facade 模式的目标是简化客户端的使用方式,提供一个更高级别的接口,同时隐藏系统的复杂性。原创 2023-09-26 15:24:33 · 921 阅读 · 2 评论 -
Java设计模式——原型模式
关键代码: 1、实现克隆操作,在 JAVA 实现 Cloneable 接口,重写 clone(),在 .NET 中可以使用 Object 类的 MemberwiseClone() 方法来实现对象的浅拷贝或通过序列化的方式来实现深拷贝。1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。设计模式,允许一个对象在创建另外一个可定制的对象,无需知道如何创建的细节。5、一个对象多个修改者的场景。原创 2022-10-30 23:12:36 · 1193 阅读 · 0 评论 -
JAVA设计模式:建造者模式原理与代码理解
文章目录1、概念2、代码理解1、概念建造者模式:将复杂对象的构造与它的实现相分离,让相同的构建过程可以创建不同的对象。适用场合:复杂对象的算法应该独立于该对象的组成部分或当构造过程允许被构造不同的对象时。组成角色:创建者(Builder)接口:为创建一个对象的对应部件所指定抽象接口。具体创建者(ConcreteBuilder):实现Builder的接口以构造对象的各个部件。具体创建者管理对象(Director):使用Builder接口的对象。复杂产品对象(Product):被构造的复杂对象原创 2022-04-29 13:46:18 · 1395 阅读 · 0 评论 -
Java设计模式六大原则
单一职责原则:一个类,应当只有一个引起它变化的原因;即一个类应该只有一个职责里氏替换原则:所有引用基类的地方必须能透明地使用其子类对象。依赖倒置原则:高层模块不应该依赖低层模块,两者都依赖其抽象;抽象不依赖细节;细节应该依赖于抽象。接口隔离原则:客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上。迪米特法则:是一个对象应当对其他对象尽可能少的了解,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用;原创 2022-10-16 16:21:39 · 1540 阅读 · 0 评论 -
Java设计模式——工厂模式
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。工厂模式在一般分为三类:这三种模式从上到下逐步抽象,并且更具一般性简单工厂模式又称静态工厂方法模式。从命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口,先来看看它的组成:定义一个抽象产品 Car接口,定义三个具体产品角色类:奔驰、宝马、奥迪实现接口编写简单工厂用于生产汽车运行结果如下:使用了简单工厂模式后,我们的程序更加符合现实中的情况;而且客户端免除了直接创建产品对象的原创 2022-08-13 11:28:20 · 1310 阅读 · 0 评论 -
Java设计模式——抽象工厂模式
该超级工厂又称为其他工厂的工厂。这是因为抽象工厂接口中已经确定了可以被创建的产品集合,如果需要添加新产品,此时就必须去修改抽象工厂的接口,这样就涉及到抽象工厂类的以及所有子类的改变,这就违背了"开闭原则"。但是当产品种类非常多时,就会出现 大量的与之对应的工厂类,这不应该是我们所希望的。抽象工厂模式将具体产品的创建延迟到具体工厂的子类中,这样将对象的创建封装起来,可以减少客户端与具体产品类之间的依赖,从而使系统耦合度低,这样。产品等级:多个品牌下面的同种产品;产品族:一个品牌下面的所有产品;...原创 2022-08-13 11:24:38 · 3785 阅读 · 1 评论 -
Java设计模式——代理模式
代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。代理是一个抽象的概念,简单理解就可以理解为在一个java类上去给它增加一些新的功能,但是却不用动原来的代码,在Java中分为静态代理和动态代理,然而动态代理又分为 jdk 动态代理和 cglib动态代理。:静态代理相当于是多写了一个代理类,在调用的时候调用的是代理类,在代理类中的处理还是原生的处理逻辑,不过在前后添加上需要添加的代码。......原创 2022-08-07 21:01:21 · 1464 阅读 · 0 评论 -
Java设计模式——责任链模式
创建抽象的记录器类,这里相当于抽象处理者(Handler)角色,在这个类里对请求进行抽象,并定义一个方法以设定和返回对下一个处理者的引用。定义三个级别的具体处理者(Concrete Handler),接到请求后,可以选择将请求处理掉,或者将请求传给下一个处理者。责任链模式(Chain of Responsibility Pattern)是一种常见的行为模式,它的目的是。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。可以看到先传给具体处理者去处理。...原创 2022-08-12 16:19:51 · 1363 阅读 · 0 评论 -
Java设计模式——观察者模式
观察者模式的类图如下图所:原创 2022-08-12 14:52:10 · 1480 阅读 · 0 评论 -
Java设计模式——策略模式
注意事项:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。(Strategy Pattern)也叫政策模式,是一种比较简单的模式。它的目的是定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。...原创 2022-08-12 14:01:31 · 1391 阅读 · 0 评论 -
Java设计模式——单例模式
第二次判断防止多线程创建多个实例,假如A和B 两个线程同时争抢synchronized锁,A先争抢到锁,B 等待,A线程instance赋值实例化对象,释放锁,B线程获取到到锁,如果没有第二次判断的话,直接又会创建对象,那么就不符合单例要求。,此时2 ,3发生重排序,选执行3,则instance已经不为 null,但是指向的对象还未初始化完成,如果此时B对象判断instance 不为null就会直接返回一个未初始 化完成的对象。第一次判断没有锁,如果install不为null直接返回单实例对象,提高效率。.原创 2022-08-11 15:43:56 · 1651 阅读 · 0 评论