zoukankan      html  css  js  c++  java
  • php开发面试题---创建型设计模式1(创建型设计模式有哪几种)

    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、自己的抽象工厂模式实例?

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

    二、内容在总结中

     
  • 相关阅读:
    linux 用tcpdump查看80端口访问有哪些IP
    yum-内网yum源服务器配置(CentOS6.5)
    linux 修改用户密码的几种方法
    ansible hosts文件编写,简单使用测试(普通用户、sudo用户、root用户登录权限测试)
    ansible 安装
    ansible教程
    iowait过高处理
    重装系统win10教程(激活系统、office下载、分区)
    Spingboot项目的创建与启动(基于IDEA)
    反射
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10934906.html
Copyright © 2011-2022 走看看