首页 > 编程语言 >快速了解Java设计模式

快速了解Java设计模式

时间:2022-11-01 23:24:07浏览次数:39  
标签:Java 方法 工厂 产品 new 设计模式 快速 public

背景

Java二十三种设计模式的简单介绍,目的是能看懂别人写的设计模式代码,且能应用常用的设计模式。

设计模式分类

创建型模式

工厂方法(Factory)

工厂模式分为三种:简单工厂(不属于23种 设计模式,是工厂方法的特例),工厂方法,抽象工厂。
工厂模式的相关概念:

  1. 产品:类的实例
  2. 抽象产品:抽象类或接口
  3. 产品簇:多个有内在联系或者有逻辑关系的产品。比如肯德基套餐:薯条+汉堡+可乐
  4. 产品等级:相当于产品类型
    工厂模式的思想是面向接口编程。
    简单工厂是工厂方法的一个特例,先来看看简单工厂。
    工厂是一个类,工厂生产产品。

每 new 一个对象,相当于调用者多知道了一个类,增加了类与类之间的联系,不利于程序的松耦合。其实构建过程可以被封装起来,工厂模式便是用于封装对象的设计模式。
水果工厂:

public class FruitFactory {
     public Fruit create(String type) {
         switch (type){
         	case "Apple": return new Apple();
            case "Pear": return new Pear();
            default: throw new IllegalArgumentException("invalid fruit type");
     }
}

事实上,将构建过程封装的好处不仅可以降低耦合,如果某个产品构造方法相当复杂,使用工厂模式可以大大减少代码重复,这对调用者是很方便的,因为它不用关心复杂的对象构建过程。
优点:封装了对象构建过程,让客户端调用变得方便,让程序解耦。
缺点:

  1. 客户端需要记住产品的映射关系
  2. 如果具体产品多,则简单工厂变得十分臃肿
  3. 客户端需要扩展具体产品的时候,势必要修改简单工厂中的代码,这样违反了开闭原则
    工厂方法模式来解决简单工单的弊端,它规定每个产品都有一个专属工厂。

工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
工厂方法模式(Factory Method pattern)是最典型的模板方法模式(Template Method pattern)应用

工厂方法有四个角色:抽象工厂,具体工厂;抽象产品,具体产品

// 工厂接口
public interface IFruitFactory {
    Fruit create();
}

// 苹果工厂
public class AppleFactory implements IFruitFactory {
	public Fruit create() {
		return new Apple();
    }
}

// 梨子工厂
public class PearFactory implements IFruitFactory {
    public Fruit create() {
        return new Pear();
	}
}

工厂将构建过程封装起来,调用者可以很方便的直接使用,同时他解决了简单工厂的两个弊端:

  1. 产品种类多时,工厂类不会臃肿。工厂方法符合单一职责原则。
  2. 需要新的产品时,不用改原来的工厂类,只需要添加新的工厂类。符合开闭原则。

与此同时,还是那个的缺点:产品等级增多时,工厂类的数量就会增多。

标签:Java,方法,工厂,产品,new,设计模式,快速,public
From: https://www.cnblogs.com/cloudrich/p/16849533.html

相关文章

  • javascript异步编程之generator(生成器函数)与asnyc/await语法糖
    Generator异步方案相比于传统回调函数的方式处理异步调用,​​Promise​​最大的优势就是可以链式调用解决回调嵌套的问题。但是这样写依然会有大量的回调函数,虽然他们之间......
  • java接口
    /***接口是一种特殊的抽象类,该类型只能存在常量和抽象方法,而不存在变量和具体方法*jdk1.8之前只能声明抽象方法,1.8之后可以声明具体方法*定义接口时,需要使用inter......
  • javascript异步编程之generator(生成器函数)与asnyc/await语法糖
    Generator异步方案相比于传统回调函数的方式处理异步调用,Promise最大的优势就是可以链式调用解决回调嵌套的问题。但是这样写依然会有大量的回调函数,虽然他们之间没有嵌......
  • 学习java的第三天
    学习的java的第三天基本类型转换低--------------------------------------------高byte,short,char,int,long,float,double强制类型转换重高容量类型转换到低容量类......
  • day06-JavaScript03
    JavaScript0311.DOM官方文档:https://www.w3school.com.cn/js/js_htmldom.asp基本介绍:DOM全称是DocumentObjectModel,文档对象模型。当网页被加载时,浏览器会......
  • JavaScript重要知识点整理
    (一)JavaScript简介(二)语法基础(三)流程控制(四)初识函数(补充)对象(五)字符串对象(六)数组对象(七)时间对象(八)数学对象(九)DOM基础(十)DOM进阶(十一)事件基础(十二)事件进阶(十三)window对象(十四)docu......
  • Java实现优化版【快速排序】+四度优化详解
    参考书目:《大话数据结构》一:快速排序1.基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续......
  • Java实现【邻接矩阵、邻接表的创建、遍历(DFS,BFS)】+图解+完整代码
    1.思路图解兼样例:接下来将用此图例作为测试用例2.输出结果:(1)邻接矩阵:(2)邻接表:一、邻接矩阵importjava.util.ArrayList;importjava.util.Arrays;importjava.util.LinkedList......
  • 【Java编程思想读书笔记】第五章:垃圾回收机制
    参考书目:《Java编程思想》(第四版)友链:​​【读书笔记】Java重要知识点整理与汇总​​阅读《Java编程思想》(第四版)一书收获颇多,之所以想通过用博客记笔记的方式来读书,是因为......
  • 【Java编程思想读书笔记】第二章:一切都是对象+第三章:操作符+第四章:控制执行流程
    参考书目:《Java编程思想》(第四版)友链:​​【读书笔记】Java重要知识点整理与汇总​​阅读《Java编程思想》(第四版)一书收获颇多,之所以想通过用博客记笔记的方式来读书,是因为......