精华内容
下载资源
问答
  • 1、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 ...4、Builder,建造模式:将一个复杂对象的构建他的表示相分离,使得同样的构建过程可以创建不同的表示。 5、Prototype,

    1、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点


    2、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。


    3、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。


    4、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。


    5、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。
    行为型有:


    6、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。


    7、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。


    8、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。


    9、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。


    10、State,状态模式:允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。


    11、Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。


    12、China of Responsibility,职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系


    13、Mediator,中介者模式:用一个中介对象封装一些列的对象交互。


    14、Visitor,访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。


    15、Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。


    16、Memento,备忘录模式:在不破坏对象的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
    结构型有:


    17、Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性。


    18、Facade,外观模式:为子系统中的一组接口提供一致的界面,fa?ade提供了一高层接口,这个接口使得子系统更容易使用。


    19、Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问


    20、Adapter,适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。


    21、Decrator,装饰模式:动态地给一个对象增加一些额外的职责,就增加的功能来说,Decorator模式相比生成子类更加灵活。


    22、Bridge,桥模式:将抽象部分与它的实现部分相分离,使他们可以独立的变化。


    23、Flyweight,享元模式


    好处是遵循7大设计原则
    1.开闭原则(Open Close Principle)
    2.里氏代换原则(Liskov Substitution Principle)
    3.依赖倒转原则(Dependence Inversion Principle)
    4.接口隔离原则(Interface Segregation Principle)
    5.组合/聚合复用原则
    6.迪米特法则(Law Of Demeter)
    7.单一职责原则(Single Responsibility Principle)

    展开全文
  • 设计模式面试题

    2020-12-05 22:09:11
    项目使用的是springboot项目,其使用到的设计模式如下:单例模式,抽象工厂模式,代理模式,装饰者模式,桥接模式,策略模式,模板模式,建造者模式,观察者模式。 2. 在写业务代码的过程中使用过哪些模式? a. ...

    1. 项目开发中接触过哪些设计模式?

    项目使用的是springboot项目,其使用到的设计模式如下:单例模式,抽象工厂模式,代理模式,装饰者模式,桥接模式,策略模式,模板模式,建造者模式,观察者模式。

    2. 在写业务代码的过程中使用过哪些模式?

    a. 策略模式

    场景:任务模块:一团一单任务,与XX团队的沟通任务,续保任务等,不同的任务有不同的生成策略。

    2. 代理模式

    使用Aop实现公共的接口,方法的入参打印,公共异常捕捉机制。

    3.观察者模式

    spring的监听机制

    场景:保单下来时,将保单信息传递给监听者,进行保单信息同步

    展开全文
  • 创建型模式,共五种:工厂方法模式抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十...

    注:因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。

    1.你所知道的设计模式有哪些?

    参考回答

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

    2.谈谈MVC、MVP和MVVM,好在哪里,不好在哪里 ?

    参考回答:

    2.1.MVC:
    • 视图层(View) 对应于xml布局文件和java代码动态view部分
    • 控制层(Controller) MVC中Android的控制层是由Activity来承担的,Activity本来主要是作为初始化页面,展示数据的操作,但是因为XML视图功能太弱,所以Activity既要负责视图的显示又要加入控制逻辑,承担的功能过多。
    • 模型层(Model) 针对业务模型,建立数据结构和相关的类,它主要负责网络请求,数据库处理,I/O的操作。

    总结

    具有一定的分层,model彻底解耦,controller和view并没有解耦层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有 controller和view在android中无法做到彻底分离,但在代码逻辑层面一定要分清业务逻辑被放置在model层,能够更好的复用和修改增加业务

    2.2.MVP

    通过引入接口BaseView,让相应的视图组件如Activity,Fragment去实现BaseView,实现了视图层的独立,通过中间层Preseter实现了Model和View的完全解耦。MVP彻底解决了MVC中View和Controller傻傻分不清楚的问题,但是随着业务逻辑的增加,一个页面可能会非常复杂,UI的改变是非常多,会有非常多的case,这样就会造成View的接口会很庞大

    2.3.MVVM

    MVP中我们说过随着业务逻辑的增加,UI的改变多的情况下,会有非常多的跟UI相关的case,这样就会造成View的接口会很庞大。而MVVM就解决了这个问题,通过双向绑定的机制,实现数据和UI内容,只要想改其中一方,另一方都能够及时更新的一种设计理念,这样就省去了很多在View层中写很多case的情况,只需要改变数据就行。

    2.4.三者如何选择?
    • 如果项目简单,没什么复杂性,未来改动也不大的话,那就不要用设计模式或者架构方法,只需要将每个模块封装好,方便调用即可,不要为了使用设计模式或架构方法而使用。
    • 对于偏向展示型的app,绝大多数业务逻辑都在后端,app主要功能就是展示数据,交互等,建议使用mvvm。
    • 对于工具类或者需要写很多业务逻辑app,使用mvp或者mvvm都可。

    3.封装p层之后.如果p层数据过大,如何解决?

    参考回答:

    对于MVP模式来说,P层如果数据逻辑过于臃肿,建议引入RxJava或则Dagger,越是复杂的逻辑,越能体现RxJava的优越性

    4.是否能从Android中举几个例子说说用到了什么设计模式 ?

    参考回答:

    • AlertDialog、Notification源码中使用了Builder(建造者)模式完成参数的初始化
    • Okhttp内部使用了责任链模式来完成每个Interceptor拦截器的调用
    • RxJava的观察者模式;单例模式;GridView的适配器模式;Intent的原型模式
    • 日常开发的BaseActivity抽象工厂模式

    5.装饰模式和代理模式有哪些区别 ?

    参考回答:

    装饰器模式与代理模式的区别就在于

    • 两者都是对类的方法进行扩展,但装饰器模式强调的是增强自身,在被装饰之后你能够在被增强的类上使用增强后的功能。
    • 而代理模式则强调要让别人帮你去做一些本身与你业务没有太多关系的职责(记录日志、设置缓存)代理模式是为了实现对象的控制,因为被代理的对象往往难以直接获得或者是其内部不想暴露出来。

    6.实现单例模式有几种方法 ?懒汉式中双层锁的目的是什么 ?两次判空的目的又是什么 ?

    参考回答:

    • 单例模式实现方法有多种:饿汉,懒汉(线程安全,线程非安全),双重检查(DCL),内部类,以及枚举
    • 所谓双层检验锁(在加锁前后对实例对象进行两次判空的检验):加锁是为了第一次对象实例化的线程同步,而锁内还要有第二层判空是因为可能会有多个线程进入第一层if判断内部,而在加锁代码块外排队等候,如果锁内不进行第二次检验,仍然会出现实例化多个对象的情况。

    7.用到的一些开源框架,介绍一个看过源码的,内部实现过程。

    参考回答:

    面试常客:Okhttp,Retrofit,Glide,RxJava,GreenDao,Dagger等

    8.Fragment如果在Adapter中使用应该如何解耦?

    参考回答:

    • 接口回调
    • 广播
    展开全文
  • 领域驱动设计与模式实战

    热门讨论 2012-08-09 17:50:23
    10.4.1 热门话题有哪些 10.4.2 AOP术语定义 10.4.3 .NET中的AOP 10.4.4 小结 10.5 小结 第11章 关注UI 11.1 提前结语 11.2 模型-视图-控制器模式 11.2.1 示例:Joe的Shoe Shop程序 11.2.2 通过适配器简化视图界面 ...
  • 创建型模式,共五种:工厂方法模式抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十...

    注:因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。

    1.你所知道的设计模式有哪些?

    参考回答

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

    2.谈谈MVC、MVP和MVVM,好在哪里,不好在哪里 ?

    参考回答:

    2.1.MVC:

    • 视图层(View) 对应于xml布局文件和java代码动态view部分
    • 控制层(Controller) MVC中Android的控制层是由Activity来承担的,Activity本来主要是作为初始化页面,展示数据的操作,但是因为XML视图功能太弱,所以Activity既要负责视图的显示又要加入控制逻辑,承担的功能过多。
    • 模型层(Model) 针对业务模型,建立数据结构和相关的类,它主要负责网络请求,数据库处理,I/O的操作。

    总结

    具有一定的分层,model彻底解耦,controller和view并没有解耦层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有 controller和view在android中无法做到彻底分离,但在代码逻辑层面一定要分清业务逻辑被放置在model层,能够更好的复用和修改增加业务

    2.2.MVP

    通过引入接口BaseView,让相应的视图组件如Activity,Fragment去实现BaseView,实现了视图层的独立,通过中间层Preseter实现了Model和View的完全解耦。MVP彻底解决了MVC中View和Controller傻傻分不清楚的问题,但是随着业务逻辑的增加,一个页面可能会非常复杂,UI的改变是非常多,会有非常多的case,这样就会造成View的接口会很庞大

    2.3.MVVM

    MVP中我们说过随着业务逻辑的增加,UI的改变多的情况下,会有非常多的跟UI相关的case,这样就会造成View的接口会很庞大。而MVVM就解决了这个问题,通过双向绑定的机制,实现数据和UI内容,只要想改其中一方,另一方都能够及时更新的一种设计理念,这样就省去了很多在View层中写很多case的情况,只需要改变数据就行。

    2.4.三者如何选择?

    • 如果项目简单,没什么复杂性,未来改动也不大的话,那就不要用设计模式或者架构方法,只需要将每个模块封装好,方便调用即可,不要为了使用设计模式或架构方法而使用。
    • 对于偏向展示型的app,绝大多数业务逻辑都在后端,app主要功能就是展示数据,交互等,建议使用mvvm。
    • 对于工具类或者需要写很多业务逻辑app,使用mvp或者mvvm都可。

    3.封装p层之后.如果p层数据过大,如何解决?

    参考回答:

    对于MVP模式来说,P层如果数据逻辑过于臃肿,建议引入RxJava或则Dagger,越是复杂的逻辑,越能体现RxJava的优越性

    4.是否能从Android中举几个例子说说用到了什么设计模式 ?

    参考回答:

    • AlertDialog、Notification源码中使用了Builder(建造者)模式完成参数的初始化
    • Okhttp内部使用了责任链模式来完成每个Interceptor拦截器的调用
    • RxJava的观察者模式;单例模式;GridView的适配器模式;Intent的原型模式
    • 日常开发的BaseActivity抽象工厂模式

    5.装饰模式和代理模式有哪些区别 ?

    参考回答:

    装饰器模式与代理模式的区别就在于

    • 两者都是对类的方法进行扩展,但装饰器模式强调的是增强自身,在被装饰之后你能够在被增强的类上使用增强后的功能。
    • 而代理模式则强调要让别人帮你去做一些本身与你业务没有太多关系的职责(记录日志、设置缓存)代理模式是为了实现对象的控制,因为被代理的对象往往难以直接获得或者是其内部不想暴露出来。

    6.实现单例模式有几种方法 ?懒汉式中双层锁的目的是什么 ?两次判空的目的又是什么 ?

    参考回答:

    • 单例模式实现方法有多种:饿汉,懒汉(线程安全,线程非安全),双重检查(DCL),内部类,以及枚举
    • 所谓双层检验锁(在加锁前后对实例对象进行两次判空的检验):加锁是为了第一次对象实例化的线程同步,而锁内还要有第二层判空是因为可能会有多个线程进入第一层if判断内部,而在加锁代码块外排队等候,如果锁内不进行第二次检验,仍然会出现实例化多个对象的情况。

    7.用到的一些开源框架,介绍一个看过源码的,内部实现过程。

    参考回答:

    面试常客:Okhttp,Retrofit,Glide,RxJava,GreenDao,Dagger等

    8.Fragment如果在Adapter中使用应该如何解耦?

    参考回答:

    • 接口回调
    • 广播

    想学更多Android相关知识或者面试资料的关注主页
    今日更新视频:动态代理实现AOP打造淘宝式权限验证以及行为统计

    展开全文
  • 正文 从我个人的角度写写30多岁码工的感受:的确是受年龄压力开始增大了。...5、简单工厂、工厂方法抽象工厂、Builder模式的区别? 6、装饰模式和代理模式有哪些区别 ?桥接模式相比呢? 7、集合框架
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件...
  • 如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception什么区别?  error 表示恢复...
  • 说明工厂模式。 126 3、开发中都用到了那些设计模式?用在什么场合? 127 九. j2ee部分 127 1、BSCS的联系区别。 127 2、应用服务器WEB SERVER的区别? 128 3、应用服务器那些? 128 4、J2EE是什么? 128 5、...
  • design-pattern-forjava.zip

    2019-07-16 03:29:11
    1,抽象工厂模式,提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类. 2,适配器模式:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以...
  • 数据库管理系统的主要功能有哪些? 答: ( l )数据库定义功能; ( 2 )数据存取功能; ( 3 )数据库运行管理; ( 4 )数据库的建立和维护功能。 7 .试述数据模型的概念、数据模型的作用和数据模型的三个要素。...
  • Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), ...
  • java 面试题 总结

    2009-09-16 08:45:34
    1、面向对象的特征有哪些方面 1.抽象抽象就是忽略一个主题中当前目标无关的那些方面,以便更充分地注意当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括...
  • java面试宝典

    2013-02-28 16:04:01
    92、一般情况下,关系数据模型对象模型之间有哪些匹配关系(A,B,C) 21 93、以下关于SessionFactory的说法哪些正确?(B,C) 21 94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性...
  • 千方百计笔试题大全

    2011-11-30 21:58:33
    92、一般情况下,关系数据模型对象模型之间有哪些匹配关系(A,B,C) 21 93、以下关于SessionFactory的说法哪些正确?(B,C) 21 94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    说明工厂模式。 25 39. EJB需直接实现它的业务接口或Home接口吗,请简述理由。 25 40. 请对以下在J2EE中常用的名词进行解释(或简单描述) 25 41. STRUTS的应用(如STRUTS架构) 26 42. Jdo是什么? 26 43. WEB SERVICE...
  • java面试800题

    2011-09-13 20:25:48
    template模板方法模式、memento备忘录模式、observer观察者模式、command命令模式、state状态模式、strategy策略模式、mediator调停者模式、interpreter解释器模式、visitor访问者模式、chain of responsibility责任...
  • java基础题 很全面

    2009-05-09 09:24:24
    说明工厂模式。 15 71. 内部类可以引用他包含类的成员吗?有没有什么限制? 15 J2EE 15 1. JSP的内置对象及方法。 15 2. JSP的常用指令 16 3. Request对象的主要方法: 16 4. jsp有哪些动作?作用分别是什么? 16 5. ...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

抽象工厂模式与工厂方法模式有哪些不同