设计模式
文章平均质量分 94
设计模式学习和实验探讨
烟雨平生9527
没有谁的生活会一直完美,但无论什么时候,都要看着远方,满怀希望就会所向披靡
展开
-
万字解析设计模式之观察者模式、中介者模式、访问者模式
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响。如果对象2发生变化,那么将会有5个对象受到影响。也就是说,同事类之间直接关联的设计是不好的。原创 2023-11-27 22:38:05 · 1831 阅读 · 0 评论 -
万字解析设计模式之责任链模式、状态模式
为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。原创 2023-11-25 19:15:50 · 1739 阅读 · 0 评论 -
万字解析设计模式之模板方法与解释器模式
解释器模式是一种行为型设计模式,它定义了一个语言的语法,并用一个解释器来解释该语言中的句子。通常,解释器模式用于将一个复杂的语言拆分成一些简单的语言元素,使它们易于理解和操作。原创 2023-11-24 16:26:25 · 1361 阅读 · 0 评论 -
万字解析设计模式之策略模式、命令模式
日常生活中,我们出去吃饭都会遇到下面的场景。命令模式是一种行为设计模式,将请求或操作封装成对象,从而使请求者和接收者松耦合,使发出请求的责任和执行请求的责任分割开。在命令模式中,命令就像是一个对象,可以被存储、重复、撤销、恢复等操作,因此它可以通过队列、日志等方式来管理和操作。为什么需要命令模式假如你正在开发一款新的文字编辑器, 当前的任务是创建一个包含多个按钮的工具栏, 并让每个按钮对应编辑器的不同操作。原创 2023-11-25 13:59:15 · 1521 阅读 · 0 评论 -
万字解析设计模式之组合模式、亨元模式
享元模式是一种结构型设计模式,旨在减少内存占用和提高性能。它将对象分解为可共享的和不可共享的部分。可共享的部分是多个对象共有的、不变的部分,它们可以被多个对象共享使用,从而减少内存占用。不可共享的部分是对象不同的、可变的部分,每个对象各自拥有不同的副本。通过应用享元模式,我们可以大幅度减少系统中的对象数量,提高系统的性能和响应速度。然而,享元模式会增加程序的复杂性和开发难度,因为需要将对象分解为可共享和不可共享的部分,并维护对象的共享池。因此,需要在实际应用中根据具体情况进行权衡和取舍。定义。原创 2023-11-22 18:37:37 · 651 阅读 · 0 评论 -
万字解析设计模式之桥接模式、外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它为一组复杂的子系统接口提供了一个统一的接口,以方便客户端使用。外观模式通过将复杂的系统封装在一个简单的外观对象中,简化了客户端的调用过程,同时隐藏了系统的复杂性。外观模式通常会定义一个简单的高层接口,这个接口封装了系统的所有复杂流程和方法调用,并将这些流程和方法调用转化为若干个简单的方法,供客户端直接调用。这样客户端就不需要了解系统的内部实现细节,也不需要知道哪些子系统需要协同工作才能完成一个请求。原创 2023-11-21 22:23:15 · 624 阅读 · 0 评论 -
万字解析设计模式之 装饰者模式
装饰者模式是一种结构型设计模式,它允许在运行时动态地为一个对象添加额外的职责。它以一种透明的方式来扩展对象的功能,而不需要通过子类来实现。在装饰者模式中,有一个基本对象,也称为组件,它可以被一个或多个装饰器包装。装饰器不改变基本对象本身的行为,而是在基本对象的行为之前或之后添加一些额外的行为。这样可以轻松地构建出复杂的对象,而不需要使用大量的子类。动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活我们先来看一个快餐店的例子。原创 2023-11-21 12:52:05 · 439 阅读 · 0 评论 -
万字解析设计模式之代理模式
代理模式是一种结构型设计模式,它允许通过创建代理对象来控制对其他对象的访问。这种模式可以增加一些额外的逻辑来控制对原始对象的访问,同时还可以提供更加灵活的访问方式。代理模式分为静态代理和动态代理两种。是在编译时就确定代理对象和目标对象的关系,由程序员手动编写代理类;是在运行时根据接口动态生成代理对象,无需手动编写代理类。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有两种。代理模式可以用于实现对象的远程访问、权限控制、性能优化等功能。原创 2023-11-20 23:46:38 · 318 阅读 · 0 评论 -
万字解析设计模式之 适配器模式
将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。适配器模式分为类适配器模式和对象适配器模式,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。适配器模式的实现有两种方式::一次最多只能适配一个适配者类,不能同时适配多个适配者;适配者类不能为最终类;目标抽象类只能为接口,不能为类。:可以把多个不同的适配者适配到同一个目标,还可以适配一个适配者的子类;在适配器中置换适配者类的某些方法比较麻烦。原创 2023-11-21 10:10:13 · 244 阅读 · 0 评论 -
万字解析设计模式之原型模式与建造者模式
建造者模式是一种创建型设计模式,它允许你将一个复杂对象的构造过程分解成若干个简单的步骤,从而使得同样的构造过程可以创建不同的表示。建造者模式解决了在创建复杂对象时,对象内部的表现和构造是紧密耦合在一起的难题,使得同样的构建过程可以创建不同的表现形式,并且不需要修改构造过程的代码。分离了部件的构造(由Builder来负责)和装配(由Director负责从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。原创 2023-10-30 21:22:22 · 764 阅读 · 0 评论 -
万字解析设计模式之工厂方法模式与简单工厂模式
简单工厂不是一种设计模式,反而比较像是一种编程习惯。简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一个工厂类,该类专门用于创建其他对象。简单工厂模式属于静态工厂模式,即在工厂类中提供静态方法,根据传入的参数不同返回不同的对象实例。工厂方法模式(Factory Method Pattern)又称为工厂模式,是一种创建型设计模式。在工厂方法模式中,定义一个用于创建对象的接口,但让子类决定将哪一个类实例化。原创 2023-10-29 10:41:52 · 274 阅读 · 0 评论 -
万字解析设计模式之单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。原创 2023-10-28 09:33:41 · 505 阅读 · 0 评论