前端三大类设计模式学习

如我们所熟悉的,设计模式通常被分为三大类:创建型模式、结构型模式和行为型模式。每一种类型的设计模式都解决了软件设计中的不同方面的问题。

  • 创建型模式关注的是对象的创建机制,目的是找到一种方法,既能创建对象,又能在系统中保持合适的控制。这类模式有助于创建对象的过程更加灵活和可扩展。
  • 结构型模式关注如何组合类或对象构成更大的结构,它侧重于简化类或对象的接口,以及如何将类或对象结合在一起形成更大的结构。
  • 行为型模式关注的是对象之间的职责分配,以及如何让对象相互作用来完成任务。

假如你是一个杂货店老板,你需要从不同的供应商那里进货。假设你需要订购牛奶、面包和其他商品。你可以联系不同的工厂来获得这些商品。

如果没有工厂,货物从哪里来呢?要么,你自己学会制作这些产品,要么,你去联系不同的人拼凑出制作这个产品的流水线。这两种方式都不是那么容易。

在程序设计中,如果没有工厂模式帮助我们创建复杂对象。那么当客户端需要使用某个对象时,客户端就需要自己创建,或者从其他类中拼凑出这个对象。而有了工厂模式,就只需要和工厂打交道即可。无论产品多么复杂,创建流程都在工厂里完成了。

复制代码
// 定义产品接口
interface Product {
    String getProductName();
    double getPrice();
}

// 定义具体产品
class Milk implements Product {
    @Override
    public String getProductName() {
        return "Milk";
    }

    @Override
    public double getPrice() {
        return 2.50;
    }
}

class Bread implements Product {
    @Override
    public String getProductName() {
        return "Bread";
    }

    @Override
    public double getPrice() {
        return 1.50;
    }
}

// 抽象工厂
interface SupplierFactory {
    Product supplyProduct();
}

// 具体工厂
class DairyProductsFactory implements SupplierFactory {
    @Override
    public Product supplyProduct() {
        return new Milk();
    }
}

class BakeryFactory implements SupplierFactory {
    @Override
    public Product supplyProduct() {
        return new Bread();
    }
}

// 使用示例
public class Main {
    public static void main(String[] args) {
        SupplierFactory dairyFactory = new DairyProductsFactory();
        Product milk = dairyFactory.supplyProduct();
        System.out.println(milk.getProductName() + " price: " + milk.getPrice());

        SupplierFactory bakeryFactory = new BakeryFactory();
        Product bread = bakeryFactory.supplyProduct();
        System.out.println(bread.getProductName() + " price: " + bread.getPrice());
    }
}

运行程序,输出如下:

复制代码
Milk price: 2.5
Bread price: 1.5

你学会了吗?

相关推荐
HugoStudio_SWAN1 小时前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
sakiko_2 小时前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
存在morning4 小时前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶5 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
凯尔萨厮7 小时前
Java学习笔记十(注解)
java·笔记·学习
JoannaJuanCV7 小时前
VLM学习-SFT(监督微调)
深度学习·学习·机器学习·大模型·视觉大模型·vlm·视觉编码器
程序员大雄学编程8 小时前
微积分43. 无穷积分入门:从概念到Python实战可视化
开发语言·python·学习·微积分
一条破秋裤9 小时前
STM32 学习笔记:GPIO 输出实验——LED 闪烁、流水灯与蜂鸣器
笔记·stm32·学习
2601_962073979 小时前
【MySQL】全面学习数据库查询技巧:查询指令深度学习指南
数据库·学习·mysql
存在morning9 小时前
【Paimon 学习笔记 二】存储架构:快照、manifest、LSM 树、bucket
笔记·学习·架构