几种常见的设计模式要记住

简介: 《架构基础》

请写出您熟悉的几种设计模式,并做简单介绍。

答:工厂设计模式:程序在接口和子类之间加入了一个过渡端,通过此过渡端可以动态取得实现了共同接口的子类实例化对象。

代理设计模式:指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如生活中的通过代理访问网络,客户通过网络代理连接网络(具体业务),由代理服务器完成用户权限和访问限制等与上网相关的其他操作(相关业务)

适配器模式:如果一个类要实现一个具有很多抽象方法的接口,但是本身只需要实现接口中的部分方法便可以达成目的,所以此时就需要一个中间的过渡类,但此过渡类又不希望直接使用,所以将此类定义为抽象类最为合适,再让以后的子类直接继承该抽象类便可选择性的覆写所需要的方法,而此抽象类便是适配器类。


写出你用过的设计模式,并至少写出2种模式的类图或关键代码。

工厂设计模式:

思路说明:由一个工厂类根据传入的参数(一般是字符串参数),动态决定应该创建哪一个产品子类(这些产品子类继承自同一个父类或接口)的实例,并以父类形式返回

优点:客户端不负责对象的创建,而是由专门的工厂类完成;客户端只负责对象的调用,实现了创建和调用的分离,降低了客户端代码的难度;

缺点:如果增加和减少产品子类,需要修改简单工厂类,违背了开闭原则;如果产品子类过多,会导致工厂类非常的庞大,违反了高内聚原则,不利于后期维护。


publicclassSimpleFactory {

publicstaticProduct createProduct(String pname){

Product product=null;

if("p1".equals(pname)){

product = newProduct1();

}elseif("p2".equals(pname)){

product = newProduct2();

}elseif("pn".equals(pname)){

product = newProductN();

}

returnproduct;

}

}


单例模式


/**

 * 饿汉式的单例模式

 * 在类加载的时候创建单例实例,而不是等到第一次请求实例的时候的时候创建

* 1、私有 的无参数构造方法Singleton(),避免外部创建实例

 * 2、私有静态属性instance

 * 3、公有静态方法getInstance()

 */

publicclassSingleton {

privatestaticSingleton instance = newSingleton();

privateSingleton(){ }

publicstaticSingleton getInstance(){

returninstance;

}

}

/**

 * 懒汉式的单例模式

 *在类加载的时候不创建单例实例,只有在第一次请求实例的时候的时候创建

*/

publicclassSingleton {

privatestaticSingleton instance;

privateSingleton(){ }

/**

 * 多线程情况的单例模式,避免创建多个对象

*/

publicstaticSingleton getInstance(){

if(instance ==null){//避免每次加锁,只有第一次没有创建对象时才加锁

synchronized(Singleton.class){//加锁,只允许一个线程进入

if(instance==null){ //只创建一次对象

instance = newSingleton();

}

}

}

returninstance;

}}


列出除Singleton外的常用的3种设计模式,并简单描述

答:工厂模式:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

适配器模式:适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。

模板模式:在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

相关文章
|
3月前
|
设计模式 存储 算法
|
设计模式 程序员
设计模式 | 模版方法
设计模式 | 模版方法
76 0
|
设计模式
纵观设计模式
前言: 设计模式已经学习了近一个月,但深知还没有学到设计模式的精髓,先将这一阶段的感受记录下来,以后加实例辅助学习。
纵观设计模式
|
设计模式
设计模式——里氏替换
设计模式——里氏替换
|
设计模式 XML 开发框架
设计模式的理解
设计模式的理解
设计模式的理解
|
设计模式 Java
|
设计模式 存储 算法
【设计模式】常用的10种设计模式
收录一些自己在开发过程中比较常用的模式,整理出来以便自己梳理和复习,从而熟能生巧,举一反三。下面只列出模式的脉络大纲,取最核心的逻辑进行讲解。
105 0
【设计模式】常用的10种设计模式
|
设计模式 存储 安全
设计模式(三)
设计模式
128 0
|
设计模式 存储 缓存
设计模式的几个问题
《基础系列》
110 0
|
设计模式 uml
设计模式(二),设计模式详解
设计模式(二),设计模式详解