抽象方法

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

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

【C++】--抽象工厂模式

只谈情不闲聊 提交于 2019-11-27 03:39:40
本文借鉴Java大佬的 设计模式 ,灰常厉害的大佬 简单工厂模式---> https://blog.csdn.net/aby_byy/article/details/99328126 工厂模式---> https://blog.csdn.net/aby_byy/article/details/99329071 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。在抽象工厂模式中,每一个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品。 A类、B类(抽象产品) 它为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法 A1、A2、B1、B2类(具体产品) 它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法。 AbstractFactor类(抽象工厂) 它声明了一组用于创建一族产品的方法createA()、createB(),每一个方法对应一种产品。 D1、D2(具体工厂) 它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。 比如生产 15.6的电脑 ,那么就得是15.6的显示屏 15.6的外壳 始终是同一个产品族的对象! 抽象工厂模式实现:

面试宝典

落花浮王杯 提交于 2019-11-27 03:25:16
目录: 值类型和引用类型的区别 装箱拆箱(强类型 弱类型) C# 四大基本方法:tostring() equals() gethashcode() gettype() 泛型(安全性 为什么效率高) 接口和类区别 抽象类(方法)和虚类(方法)的区别 了解下.Net framework Const和Readonly 父类与子类之间的关系 继承 重写 重载 单例模式 实际编程用的较多 序列化和反序列化 CLR (概念 核心功能) Asp.net页面传值的几种方式 Dataset和Datareader的区别 RequireJs 对象获取类型 WCF 三要素 绑定方式 应用程序域 如何处理异常 haveing groupby Varchar nvarchar区别 常用的字符串函数(网上搜下) 谈谈final, finally, finalize的区别 了解三层架构 mvc ADO.NET 数据库连接常用的几个类型 C# : 值类型和引用类型的区别 值类型和引用类型理解透彻后,我们知道C#里面是值传递,但是有些变量是引用类型的,在传递和拷贝时需要特别注意。方法传递参数时加上ref(out),为引用传递参数。 值传递仅仅传递的是值,不影响原始值。 引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。 值类型 : 原类型 (Sbyte、Byte、Short、Ushort、Int、Uint

抽象类

落花浮王杯 提交于 2019-11-27 03:04:40
1 /** 2 * 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 3 * 意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 4 * 的类就是抽象类。 5 * 定义 6 * 抽象方法 : 没有方法体的方法。 7 * 抽象类 :包含抽象方法的类。 8 * */ 1 public abstract class Animal { 2 3 public abstract void run(); 4 } 5 6 7 8 public class Cat extends Animal{ 9 10 public void run() { 11 System.out.println("猫在跑"); 12 } 13 } 14 15 16 public class Test { 17 18 public static void main(String[] args) { 19 Cat c = new Cat(); 20 c.run(); 21 } 22 } 1 /** 2 * 关于抽象类的使用,以下为语法上要注意的细节,虽然条目较多,但若理解了抽象的本质,无需死记硬背。 3 * 1 . 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。 4 * 理解

javaSE基础-1

狂风中的少年 提交于 2019-11-27 02:42:07
请你说说Java和PHP的区别? PHP暂时还不支持像Java那样JIT运行时编译热点代码,而java支持,PHP的库函数用C实现,而Java核心运行时类库(jdk/jre/lib/rt.jar,大于60MB)用Java编写(jdk/src.zip), 所以Java应用运行的时候,用户编写的代码以及引用的类库和框架都要在JVM上解释执行. Java的HotSpot机制,直到有方法被执行10000次才会触发JIT编译, 在此之前运行在解释模式下,以避免出现JIT编译花费的时间比方法解释执行消耗的时间还要多的情况.; PHP内置模板引擎,自身就是模板语言.而Java Web需要使用JSP容器如Tomcat或第三方模板引擎.; PHP也可以运行在多线程模式下,比如Apache的event MPM和Facebook的HHVM都是多线程架构.不管是多进程还是多线程的PHP Web运行模式,都不需要PHP开发者关心和控制,而Java多线程编程需要Java开发者编码参与,PHP一个worker进程崩溃,master进程会自动新建一个新的worker进程,并不会导致PHP服务崩溃.而Java多线程编程稍有不慎(比如没有捕获异常)就会导致JVM崩溃退出; == 请你谈谈Java中是如何支持正则表达式操作的?== Java中的String类提供了支持正则表达式操作的方法,包括:matches()

Lambda 表达式

二次信任 提交于 2019-11-27 02:26:05
前言 前片文章讲到,使用匿名类来表示不同的行为并不令人满意:代码十分啰嗦,这会影响程序 员在实践中使用行为参数化的积极性。在本章中,我们会教给你Java 8中解决这个问题的新工 具——Lambda表达式。它可以让你很简洁地表示一个行为或传递代码。现在你可以把Lambda 表达式看作匿名功能,它基本上就是没有声明名称的方法,但和匿名类一样,它也可以作为参 数传递给一个方法。 本章的行文思想就是教你如何一步一步地写出更简洁、更灵活的代码。 Lambda 管中窥豹 可以吧Lambda表达式简单的理解为可以可以传递匿名函数的一种形式:它没有名称,但是有参数列表,函数主体,返回类型,甚至还可以有一个可以抛出异常的函数列表. 匿名:我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想得多! 函数: 我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表。 传递:Lambda表达式可以作为参数传递给方法或存储在变量中. 简洁:无需像匿名类那样写很多模版代码. 在前面的讲解中,我们写过一个简单的Lambda表达式 可以看到,Lambda表达式有三个部分: 参数列表:这里它采用了 Comparator 中 compare 方法的参数,两个 Apple 。 箭头:把参数和函数主题分开.

《学习之道》第十四章迁移

跟風遠走 提交于 2019-11-27 02:19:22
  那么,有必要解释下。为何自然科学概念不好理解,而且大多用方程式较表示呢?   书中一直强调,自然科学概念不好理解。可是,我也解释不清楚。   书中的观点是,科学家认为围绕着抽象且形成了组块的概念精髓,而脑中没有特定应用范畴,你就能获得轻松将只是迁移到各种应用的技能。   这里的迁移是把所学的知识从一个知识背景应用到别处的能力。比如你学了一门外语之后,发现学第二名外语就比学第一门外语要轻松了。   回到主题。   为何不好理解,是因为这些概念比较抽象。而抽象的概念是,可以迁移的。   书中把数学举例子,将数学应用在特定的科目中,这样学生可以很好的理解数学。目前不讨论自然科学概念是难理解的,而是我们要运用什么方法去理解自然科学的概念,刚刚已经说了一个方法了是自己阐释,接下来的一个方法就是强调过的运行比喻。 来源: https://www.cnblogs.com/158-186/p/11337899.html

JAVA基础知识(四)

房东的猫 提交于 2019-11-27 01:32:30
目录 1.抽象类、抽象方法 2.接口interface 3.多态 4.对象转型 5.内存分析 6.设计原则 7.单例设计模式 1.抽象类、抽象方法 1.抽象方法和抽象类必须使用 abstract 修饰符修饰,有抽象方法的类只能被定义成抽象类(即方法修饰词为abstract时,类修饰词也必须为abstract),抽象类里可以没有抽象方法。 抽象方法和抽象类的规则: 1)抽象类和抽象方法必须使用abstract修饰,抽象方法不能有方法体。 2)抽象类不能被实例化。 3)抽象类可以包含成员变量,方法(普通方法和抽象方法都可以),构造器,初始化块,内部类(接口、枚举)。抽象类的构造器不能创建该类实例,主要是为了让子类调用。 4)含有抽象方法的类(定义了一个抽象方法;或继承了一个抽象父类,但没有完全实现父类包含的抽象方法;或实现了一个接口,但没有完全实现接口包含的抽象方法的三种情况)只能被定义为抽象类。 面试题: 1.可以使用new关键字来创建抽象类对象?不可以,创建的是一个匿名内部类 2.抽象类中只能有抽象方法?不一定,可以有非抽象方法 3.抽象类中可不可以没有抽象方法?可以没有抽象方法,但是这样是没有意义 4.如果父类是抽象类,则子类必须重写父类的抽象方法?不一定,子类如果是抽象类,可以不去重写 5.抽象类不能有构造方法?有构造方法 6.抽象类不能new对象,拿构造方法有什么用?1

设计模式之创建类模式PK

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 00:36:12
创建类模式包括: 工厂方法模式 建造者模式 抽象工厂模式 单例模式 原型模式 创建类模式能够提供对象的创建和管理职责. 其中单例模式和原型模式非常容易理解, 单例模式是要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新的对象,这两个不容易混淆. 工厂方法模式VS建造者模式 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步的精确构造创建出一个复杂的对象. 工厂方法模式和建造者模式的区别: 意图不同. 在工厂方法模式中, 我们关注的是产品的整体,无需关心产品的各部分是如何创建出来的; 但是在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是"由零件一步一步地组装出产品对象". 简单地说, 工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的是产品组成部分的创建过程. 产品的复杂度不同. 工厂方法模式创建的产品一般都是单一性质产品,而建造者模式创建的则是一个复合产品,它由各个部件复合而成,不见不同产品对象当然不同. 在具体应用中如何选择呢?这取决于我们在做系统设计时的意图, 如果需要详细关注一个产品不见的生产、安装步骤,则选择建造者 ,否则选择工厂方法模式 抽象工厂模式VS建造者模式 抽象工厂模式实现对产品家族的创建, 一个产品家族是这样一系列产品:

java学习第9天总结

烈酒焚心 提交于 2019-11-27 00:33:57
Day9 1.抽象(abstract): 抽取公共的抽象的属性 ,或者是方法。 抽象方法的语法: public abstract void show(); 注意点: 1.在返回值前面加上这个关键字abstract 2.抽象方法都没有方法体 {}; 3.抽象方法必须在抽象类里,反之, 抽象类里不一定是抽象方法,可以是普通的方法>> 4. 抽象方法 一般调用是没有意思 ,只有子类 重写之后才能产生意义 5.子类 继承了抽象类,子类必须重写父类的抽象方法, 除非子类也是一个抽象方法. 6.抽象类不能够被实例化,也就是不能够 new 出来 7.抽象类的构都是为了给其子类进行赋值,调用 父类的sper(); 2.抽象类的语法是: public abstract 类名{ } 抽象类 vs 普通类 区别: 1.抽象类必须用abstract 关键字来修饰 2. 抽象类不能够被实例化 抽象方vs 普通方法: 1. 抽象方法也用abstract 关键字来修饰 2.抽象方法是没有方法体 多态 : 一种事物有多种形态 1.多态必须在继承的前提下 2.多态里一般都会方法重写 多态的语法: 父类的对象 对象名称 = new 子类的对象(); 父类的对象引用执行之类对象的引用 (向上转型) 3.多态里成员变量的获取: 在多态里, 编译看左边,赋值看右边 // 多态中获取成员变量都是看左边 4