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

简介: 《架构基础》

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

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

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

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


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

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

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

目录
打赏
0
0
0
0
1543
分享
相关文章
设计模式之-降龙十八掌
设计模式之-降龙十八掌
78 0
纵观设计模式
前言: 设计模式已经学习了近一个月,但深知还没有学到设计模式的精髓,先将这一阶段的感受记录下来,以后加实例辅助学习。
104 0
纵观设计模式
2022-9-19-C++各种设计模式的简单总结
2022-9-19-C++各种设计模式的简单总结
90 0
一起来学设计模式之认识设计模式
前言 目前正在出一个设计模式专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲一下设计模式基本概念,它的基本原则以及有哪些设计模式~ 本专题的所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整吧~ 设计模式初识 设计模式是一种经过验证的、被广泛应用的解决特定问题的软件设计方案,它提供了一种在软件设计中反复使用的解决方案。设计模式通常描述了一个问题的情境、解决方案和解决方案的优点和缺点。设计模式不是一种具体的编程语言特性或库,而是一种通用的设计思想和方法。
11种常用的设计模式
有这么一个很形象的比喻,把写代码比作是建房子,代码比作是砖瓦、一个完整的系统就好比是一栋高楼大厦、程序员无疑就好比是建(ban)筑(zhuan)工,这些很表面的东西我们都可以很形象深刻的理解,其实要设计和开发一个系统远远不只这些东西,深挖表象之下隐藏着的细节往往才是灵魂所在,诸如:算法和数据结构、框架、设计模式等,设计模式是一个虚幻的抽象的概念,好比建造房子时的设计理念方案一样,一个软件系统扩展性、可维护性以及稳定健壮性如何,很大程度上取决于设计模式。
160 0
11种常用的设计模式
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等