设计模式
文章平均质量分 90
设计模式学习
多比朋友
互联网资深冲浪者
展开
-
行为型模式:模板模式
基本方法:是实现算法各个步骤的方法,是模板方法的组成部分。基本方法又可以分为三种:抽象方法(Abstract Method) :一个抽象方法由抽象类声明、由其具体子类实现。具体方法(Concrete Method) :一个具体方法由一个抽象类或具体类声明并实现,其子类可以进行覆盖也可以直接继承。钩子方法(Hook Method) :在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。一般钩子方法是用于判断的逻辑方法,这类方法名一般为isXxx,返回值类型为boolean类型。原创 2022-11-22 08:55:45 · 100 阅读 · 0 评论 -
结构模式:享元模式
享元模式(Flyweight Pattern)运用来有效地支持大量细粒度对象的复用,减少创建对象的数量,以减少内存占用和提高性能。提供了减少对象数量从而改善应用所需的对象结构的方式。原创 2022-11-14 16:31:56 · 126 阅读 · 0 评论 -
结构型模式:组合模式
一个文件系统这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,原创 2022-11-14 15:20:49 · 78 阅读 · 0 评论 -
结构型模式:外观模式
外观模式(Facade Pattern)又名门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。原创 2022-11-08 09:54:24 · 178 阅读 · 0 评论 -
结构型模式:桥接模式
* 抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用。* 扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。* 实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用。* 具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。原创 2022-11-08 09:08:46 · 118 阅读 · 0 评论 -
结构型模式:装饰者模式
允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。多层装饰比较复杂。例:快餐店。原创 2022-11-08 08:49:15 · 51 阅读 · 0 评论 -
结构型模式:适配器模式
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作,。适配器模式分为和,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。。原创 2022-11-06 10:53:31 · 96 阅读 · 0 评论 -
结构型模式:代理模式
结构型模式:关注类和对象的组合,描述如何将类或对象按某种布局组成更大的结构 。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。代理模式 代理模式(Proxy Pattern)一个类代表另一个类的功能,由于某些原因需要给某对象提供一个代理以控制对该对象的访问。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理原创 2022-11-05 21:54:09 · 83 阅读 · 0 评论 -
创建者模式:建造者模式
使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。原创 2022-11-04 23:19:26 · 103 阅读 · 0 评论 -
创建者模式 :原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。何时使用当一个系统应该独立于它的产品创建,构成和表示时。原创 2022-11-04 22:51:42 · 65 阅读 · 0 评论 -
创建者模式 :工厂模式
一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;原创 2022-11-04 22:28:30 · 55 阅读 · 0 评论 -
创建者模式 :单例设计模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。原创 2022-11-04 18:36:12 · 79 阅读 · 0 评论 -
软件设计原则
上面类图可以看到已经组装了一台电脑,但是似乎组装的电脑的cpu只能是Intel的,内存条只能是金士顿的,硬盘只能是希捷的,这对用户肯定是不友好的,用户有了机箱肯定是想按照自己的喜好,选择自己喜欢的配件。选择cpu有很多选择,如Intel,AMD等,硬盘可以选择希捷,西数等,内存条可以选择金士顿,海盗船等。迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。,两者都应该依赖其抽象;原创 2022-11-02 20:47:11 · 39 阅读 · 0 评论 -
设计模式概述
用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF(四人组)书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。用于描述如何将类或对象按某种布局组成更大的结构,GoF(四人组)书中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。用于描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,以及怎样分配职责。原创 2022-11-02 11:22:54 · 43 阅读 · 0 评论