抽象方法

设计模式

谁都会走 提交于 2019-12-05 18:08:48
目录 一、创建型模式 1. 单例模式 1.1请手写一个单例 1.2单例模式的优点和应用? 1.3单例模式的缺点 2. 工厂类相关模式 2.1工厂模式、简单工厂模式、抽象工厂模式 2.2工厂模式的优点和应用 2.3工厂模式的不足 3、建造者模式 3.2建造者模式的优点和使用场景 3.3建造者模式的缺点 4、原型模式 4.1原型模式 4.2原型模式的优点和使用场景 4.3原型模式的缺点 二、结构类设计模式 1、适配器模式 1.1适配器模式 1.2适配器模式的优点和使用场景 2、桥接模式 2.1桥接模式 2.2桥梁模式的优点和应用场景 3、 装饰器模式 3.1对装饰器的理解 ,并写出一个计时器记录方法执行性能的装饰器? 3.2装饰器模式的优点和应用场景 3.3装饰器模式的缺点 4、组合模式 4.1组合模式 4.2组合模式的优点和使用场景 4.3组合模式的缺点 5、门面模式 5.1门面模式 5.3门面模式的缺点 6、享元模式 6.1享元模式 6.2享元模式的优点和使用场景 6.3享元模式的缺点 7、代理模式 7.1代理模式 7.2代理模式的优点和使用场景 7.3代理模式的缺点 三、行为类设计模式 1、策略模式 1.1策略模式 1.2策略模式的优点和应用场景 1.3策略模式的缺点 2、责任链模式 2.1责任链模式 2.2责任链模式的优点和应用场景 2.3责任链模式的缺点 3、 命令模式 3

15.设计模式之十三:模板方法模式【行为型模式】

a 夏天 提交于 2019-12-05 17:31:40
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为 类行为模式和对象行为模式 ,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式是 GoF 设计模式中最为庞大的一类,它包含以下 11 种模式。 模板方法(Template Method)模式:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。 命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。 状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。 观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象

九、装饰者模式

 ̄綄美尐妖づ 提交于 2019-12-05 08:41:20
九、装饰者模式 装饰者模式 前言 在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰模式来实现。 什么式装饰者模式 装饰者(Decorator)模式 的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。 装饰者(Decorator)模式的主要优点有: 采用装饰模式扩展对象的功能比采用继承方式更加灵活。 可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。 其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。 装饰者模式的结构与实现 通常情况下,扩展一个类的功能会使用继承方式来实现。但继承具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。如果使用组合关系来创建一个包装对象(即装饰对象)来包裹真实对象,并在保持真实对象的类结构不变的前提下,为其提供额外的功能,这就是装饰模式的目标。下面来分析其基本结构和实现方法。 1. 模式的结构 装饰模式主要包含以下角色。 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。 具体构件(Concrete Component)角色:实现抽象构件

abstract类与interface

对着背影说爱祢 提交于 2019-12-05 08:39:00
抽象类:    1、用 abstract 修饰,抽象类中可以没有抽象方法,但抽象方法肯定在抽象类中,且抽象方法定义时不能有方法体; 2、抽象类不可以实例化只能通过继承在子类中实现其所有的抽象方法;抽象类如果不被继承就没有任何意义; 3、抽象类为子类定义了一个公共类型,封装了子类中的重复内容。 接口: 1、Interface关键字定义接口,是特殊的抽象类因为类中只包含抽象方法; 2、接口中不能 定义成员变量可以定义常量; 3、接口是其通过其他类使用 implements 关键字定义实现类,一个类一旦实现接口就必须实现其中的所有抽象方法 4、一个类可以实现多个接口,接口名之间用逗号隔开即可;一个接口可以通过 extends 关键字继承另一个接口,与此同时继承了父类中的所有方法。 来源: https://www.cnblogs.com/yz123/p/11915658.html

多态

依然范特西╮ 提交于 2019-12-05 07:51:40
抽象类 抽象:即不具体、或无法具体 例如:当我们声明一个几何图形类:圆、矩形、三角形类等,发现这些类都有共同特征:求面积、求周长、获取图形详细信息。那么这些共同特征应该抽取到一个公共父类中。但是这些方法在父类中又无法给出具体的实现,而是应该交给子类各自具体实现。那么父类在声明这些方法时,就只有方法签名,没有方法体,我们把没有方法体的方法称为抽象方法。Java语法规定,包含抽象方法的类必须是抽象类 语法格式 抽象方法 : 没有方法体的方法 抽象类:被abstract所修饰的类 抽象类的语法格式 1 【权限修饰符】 abstract class 类名{ 2 3 } 4 【权限修饰符】 abstract class 类名 extends 父类{ 5 6 } 抽象方法的语法格式 1 【其他修饰符】 abstract 返回值类型 方法名(【形参列表】); 抽象方法没有方法体 注意事项 1、抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象 假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义 2、抽象类中,也有构造方法,是供子类创建对象时,初始化父类成员变量使用的 子类的构造方法中,有默认的super()或手动的super(实参列表),需要访问父类构造方法 3、抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类

抽象类与接口

陌路散爱 提交于 2019-12-05 05:22:01
抽象类abstract详解 : 1.声明格式: abstract void fun(); 2.抽象类为该类的所有子类提供一个通用模板,抽象类避免了子类设计的随意性,该类必须用abstract修饰,可以只声明不定义,子类继承后根据需要进行重写; 3.如果一个类含有抽象方法,则这个类为抽象类,该类必须用abstract修饰——因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象(new); 注意:抽象类不一定必须含有抽象方法,只要用abstract修饰也是抽象类。 [public] abstract class ClassName { abstract void fun(); } 4.抽象类不能实例化,即不能用new来实例化抽象类; 5.抽象类可以包含属性、方法、构造方法,但是不能用new来实例化,只能被子类调用/继承; 6.抽象类就是为了继承而存在的,抽象方法必须被子类实现/重写; 7.包含抽象方法的类称为抽象类,但并不意味着抽象类中只含有抽象方法,它也可以拥有普通的成员变量及成员方法, 抽象类和普通类主要有三点区别: 1 ): 抽象方法必须为public或protected,因为private不能被子类继承,子类也就无法实现该方法,缺省默认为public; 2 ): 抽象类不能用来创建对象,因为抽象类不能实例化; 3 ): 如果一个类继承了抽象类

abstract关键字

此生再无相见时 提交于 2019-12-05 02:34:57
abstract 能用来修饰类、方法 修饰类:表示此类为抽象类,不能实例化,但类中一定有构造器,方便其子类(继承性)可实例化。   修饰方法:表示抽象方法--->抽象方法只有方法的声明没有方法体。         包含抽象方法的类一定是抽象类,但抽象类不一定要有抽象方法             如果子类重写了抽象父类中的抽象方法,此子类即可实例化--->如果没有重写,那么这个子类也必须是抽象类,需要用abstract修饰 注意: abstract不能用来修饰:属性和构造器     abstract吧能用来修饰:私有方法、静态方法、final的方法、final的类         静态方法只能有类调用 抽象静态方法(没有方法体),类调用此方法便没有意义 来源: https://www.cnblogs.com/javasds/p/11898287.html

Java面试参考指南

谁说胖子不能爱 提交于 2019-12-05 00:15:26
Java面向对象相关概念 Java是一种基于面向对象概念的编程语言,使用高度抽象化来解决现实世界的问题。 面向对象的方法将现实世界中的对象进行概念化,以便于在应用之间进行重用。例如:椅子、风扇、狗和电脑等。 Java里的类(Class)是一个蓝图、模板,或者称之为原型,它定义了同一类事物的相同属性和行为。实例(Instance)是某个类的一个具体实现,同一个类所有的实例拥有相同的属性。举例来说,你可以定义一个类叫做“房子(House)”,这个类拥有一个属性叫做“房间数(number of room)”,这样你就可以创建一个“房间数”为2的“房子”实例,你还可以创建一个“房间数”为3的“房子”实例,等等等等。 优点: 面向对象软件开发的若干优点在于: 模块化,维护成本低; 更好的代码重用,具备继承性,开发更为敏捷; 更好的代码可靠性和灵活性; 对现实世界进行建模,易于理解; 对象水平的抽象; 从一个开发阶段向另一个开发阶段过渡更为简便。 面向对象软件系统(OOPS)的四大主要特征为: 封装(Encapsulation) 继承(Inheritance) 多态(Polymorphism) 抽象(Abstraction) 封装(Encapsulation) 封装机制在对象之间提供了一种隐藏域可见性的协议。Java中使用可见性修饰符private将方法和变量限制在类内部

Java基础-函数式编程接口篇

好久不见. 提交于 2019-12-04 23:29:23
1. 函数式接口 1.1 函数式接口介绍 ​ 函数式接口在Java中是指: 有且仅有一个抽象方法的接口 。 ​ 函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。 从应用层面来讲,Java中的Lambda可以被当做是匿名内部类的“语法糖”,但是二者在原理上是不同的。 1.2 格式 只要确保接口中有且仅有一个抽象方法即可: 修饰符 interface 接口名称 { public abstract 返回值类型 方法名称(可选参数信息); // 其他非抽象方法内容 } 1.3 @FunctionalInterface注解 与 @Override 注解的作用类似,Java 8中专门为函数式接口引入了一个新的注解: @FunctionalInterface 。该注 解可用于一个接口的定义上: @FunctionalInterface public interface MyFunctionalInterface { void myMethod(); } 一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。需要注 意的是,即使不使用该注解,只要满足函数式接口的定义,这仍然是一个函数式接口

JS面向对象

雨燕双飞 提交于 2019-12-04 18:21:27
一. JavaScript面向对象前言 1.1 什么是对象? Everything is object (万物皆对象)。 对象到底是什么,我们可以从两个层次来理解。 对象是单个事物的抽象 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 对象是一个容器,封装了属性(property)和方法(method) 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等) 在实际开发中,对象是一个抽象的概念,可以将其简单理解为 : 数据集或功能集。 1.2 什么是面向对象? 面向对象只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维护性 小编的理解:面向对象就是说,使用对象的时候,你可以直接使用它所提供的功能而忽略其内部组成情况。面对对象不一定只有在编程界里才有,我们生活中无处不在;比如说,你家里的电视机,你使用了遥控,就能操作电视机,但是你实际上不知道这台电视机里面是什么零件组成的,你只要知道,我拿到遥控就可以操作电视机就好了。这就是一种面向对象的思想。 1.2.1 什么是面向对象编程? 面向对象编程 ——