php开发面试题---创建型设计模式1(创建型设计模式有哪几种)

一、总结

一句话总结:

共五种:(简单工厂模式)、工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

1、学设计模式最好的方式是什么?

能够自己举例,举一反三,并且多举例
用:用永远是最好的学习方式
自己实例多用性:一举三得:所有的设计模式,往legend系统里面来靠,这样既学了设计模式,又改进了legend2,而且这还是能把设计模式学好的为数不多的几种方法

2、设计模式大的分类有哪几种?

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。

3、设计模式六大原则?

接口:依赖倒转原则,接口隔离原则
自己:开闭原则,单一职责原则,迪米特法则
子类:里氏替换原则

开闭原则:对扩展开放,对修改关闭。
单一职责原则:每个类应该实现单一的职责
里氏替换原则:任何基类可以出现的地方,子类一定可以出现,并且增加新的行为
依赖倒转原则:面向接口编程,依赖于抽象而不依赖于具体
接口隔离原则:每个接口中不存在子类用不到却必须实现的方法
迪米特法则:最少知道原则:一个类对自己依赖的类知道的越少越好
合成复用原则:尽量首先使用合成/聚合的方式,而不是使用继承

4、工厂模式适合的场景是哪些?

凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。

5、在实际编程中,常用的简单工厂模式是哪一种?

静态工厂模式:调用的方法写成静态的

6、简单工厂模式的问题是什么?

如果想要拓展程序,必须对工厂类进行修改,这违背了开闭原则

简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,

7、工厂方法模式 相对于简单工厂模式的改进是什么?

用类的继承实现功能的扩展:解决简单工厂模式违反的开闭原则

8、抽象工厂模式实例?

比如说工厂可以生产鼠标和键盘。那么抽象工厂的实现类(它的某个具体子类)的对象都可以生产鼠标和键盘,但可能工厂A生产的是罗技的键盘和鼠标,工厂B是微软的。

9、抽象工厂模式 和 工厂方法模式 的区别实例?

多维变量和单维变量的区别:所以说抽象工厂就像工厂(比如每个工厂可以生产不同厂商的键盘和鼠标),而工厂方法则像是工厂的一种产品生产线

10、抽象工厂模式 和 工厂方法模式 的区别?

多个抽象产品类:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂类创建多个产品:工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
工厂方法关注于'怎么创建':工厂方法创建 "一种" 产品,他的着重点在于"怎么创建",也就是说如果你开发,你的大量代码很可能围绕着这种产品的构造,初始化这些细节上面。也因为如此,类似的产品之间有很多可以复用的特征,所以会和模版方法相随。

11、单例模式的好处是什么?

1、节省开销:某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符:降低了系统内存的使用频率,减轻GC压力。
3、有些情况必须使用单例模式:有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

12、自己的简单工厂模式实例?

学设计模式一定要 【用】和 【举一反三】
发送qq消息和发送微信消息,工厂里面根据字段来判断是发送的qq消息还是微信消息,从而调用想用的类的响应的方法

13、自己的工厂方法模式实例?

学设计模式一定要 【用】和 【举一反三】
发送qq消息和发送微信消息,发送类继承发送接口public interface Sender { }:,有发送qq消息的工厂,有发送微信消息的工厂

14、自己的抽象工厂模式实例?

学设计模式一定要 【用】和 【举一反三】
生成键盘和生产鼠标,华为的工厂里面生产的是华为的键盘和鼠标,小米的工厂里面生产的是小米的键盘和鼠标

二、内容在总结中

 

php开发面试题---创建型设计模式1(创建型设计模式有哪几种)的更多相关文章

  1. 【理论面试篇】收集整理来自网络上的一些常见的 经典前端、H5面试题 Web前端开发面试题

    ##2017.10.30收集 面试技巧 5.1 面试形式 1)        一般而言,小公司做笔试题:大公司面谈项目经验:做地图的一定考算法 2)        面试官喜欢什么样的人 ü  技术好. ...

  2. [转]linux C/C++服务器后台开发面试题总结

    linux C/C++服务器后台开发面试题总结  https://www.cnblogs.com/nancymake/p/6516933.html 一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别 ...

  3. 前端开发面试题-JavaScript(转载)

    本文由 本文的原作者markyun 收集总结. 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol ...

  4. java 开发面试题小整理(一)

    本篇文档将持续更新,有基础滴,也有深层次的,谢谢! 1.看下面的程序是否有问题,如果有问题,请指出并说明理由. * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 ...

  5. php开发面试题---lavarel和tp的区别是什么(呕心整理)

    php开发面试题---lavarel和tp的区别是什么(呕心整理) 一.总结 一句话总结: 反思的回顾非常有用,因为决定了我的方向和技巧 以战养己,这是非常非常好的方式 主要从大小.功能.安全性.操作 ...

  6. 前端开发面试题总结之——JAVASCRIPT(一)

    ___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...

  7. J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP

    J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言   搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理.    ...

  8. php开发面试题---Linux常用命令大全

    php开发面试题---Linux常用命令大全 一.总结 一句话总结: ls 查看目录中的文件 cd .. 返回上一级目录 cat 查看文件内容 touch 新建文件或修改时间 1.linux 系统信息 ...

  9. php开发面试题---数据库SQL调优的几种方式

    php开发面试题---数据库SQL调优的几种方式 一.总结 一句话总结: 创建索引:尽量避免使用or或者like,或者sql中的正则 存储查询中间结果 可以加sphinx搜索技术 查询优化 主从数据库 ...

随机推荐

  1. 77 geometry process

    0 引言 记录几何方面的一些处理技术. 1 任意多边形面积计算:包含凸多边形和凹多边形 转载了JustDoIT https://www.cnblogs.com/TenosDoIt/p/4047211. ...

  2. idea 使用github

    [Toc] #一.首先下载github for window 客户端,或者git客户端 这里只演示gitHub客户端,安装git客户端的话,git.exe很容易找得到. 附上网址:https://de ...

  3. 88、使用tensorboard进行可视化学习,查看具体使用时间,训练轮数,使用内存大小

    ''' Created on 2017年5月23日 @author: weizhen ''' import os import tensorflow as tf from tensorflow.exa ...

  4. Openstack组件部署 — Keystone功能介绍与认证实现流程

    目录 目录 前文列表 Keystone认证服务 Keystone认证服务中的概念 Keystone的验证过程 简单来说 前文列表 Openstack组件部署 - Overview和前期环境准备 Ope ...

  5. Portal for ArcGIS启动失败,无法访问任何门户计算机,请联系您的系统管理员。

    1.如题,打开Portal门户的时候,发现: 2.检查日志发现Portal for ArcGIS没启动,日志地址:D:\Program Files\ArcGIS\Portal\framework\se ...

  6. 详解代理自动配置 PAC

    转自知乎 最近一直在做跨域中华局域网的工作,了解了很多代理知识和基础概念,很零散,也很细碎.希望通过一段时间的学习,能够自由地穿梭在国际互联网和中华局域网之间.后续会写一系列文章记录我了解到的知识点, ...

  7. HDU 3746 Cyclic Nacklace (KMP找循环节)

    题目链接:HDU 3746 Sample Input 3 aaa abca abcde Sample Output 0 2 5 Author possessor WC Source HDU 3rd & ...

  8. C++基础知识随记

    一.什么情况必须使用初始化列表的方式声明构造函数? 1.包含常量类型的成员 2.包含引用类型的成员 3.包含没有默认构造函数的类类型成员 4.优点:对于包含有类类型成员的类来说,省去了调用一次默认构造 ...

  9. 基于MFC的Media Player播放器的制作(1---播放器界面的布局)

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 通过上面的一些预备知识,我们现在就可以自己来制作基于MFC的播放器了,接下来我们讲的是使用MFC制作我们播放器 的界面. 首先,我们我们打 ...

  10. python基础【第五篇】

    python第三节 1.整型及布尔值 1.1 进制转换 十进制 ----二进制 二进制 ----十进制 8421方法与普通计算 python中十进制转二进制示例:bin(51)>>> ...