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

简介: 《架构基础》

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

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

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

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


写出你用过的设计模式,并至少写出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 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

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

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

相关文章
|
6月前
|
设计模式 算法 Java
C++设计模式
C++设计模式
39 0
|
设计模式 算法 关系型数据库
23种设计模式总结
23种设计模式总结
92 0
|
设计模式
设计模式
设计模式是指在软件设计中,经过总结和提炼出来的、被广泛认可的、可重用的解决特定问题的设计思路和方法。设计模式可以帮助软件设计师更好地解决一些常见的设计问题,提高代码的可维护性、可扩展性和可重用性。
76 1
|
6月前
|
设计模式 Java 测试技术
设计模式之-降龙十八掌
设计模式之-降龙十八掌
60 0
|
设计模式 安全
设计模式介绍
设计模式介绍
41 0
|
设计模式 算法 程序员
【3W2H设计模式】什么是设计模式
【3W2H设计模式】什么是设计模式
261 0
|
设计模式 数据可视化 程序员
设计模式到底是什么
设计模式到底是什么
84 1
|
设计模式 算法 C#
使用c#实现23种常见的设计模式
使用c#实现23种常见的设计模式
83 0
|
设计模式
|
设计模式 Java