Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2|回复: 0

谈一谈:代码更雅!开发者不能错过的五种设计模式

[复制链接]

38万

主题

0

回帖

114万

积分

超级版主

Rank: 8Rank: 8

积分
1149389
发表于 昨天 16:17 | 显示全部楼层 |阅读模式
在软件开发中,我们常常会遇到一些常见类型的问题。

设计模式通过提供高效且经过验证的方法来处理这些问题,从而帮助开发人员创建高效且具有适应性的解决方案。

这些设计模式是后端开发的重要组成部分,它们为解决问题提供了结构化的方法,从而提高了性能。

接下来,我们简要讨论五种设计模式,这些模式在软件开发人员中非常受欢迎。

观察者设计模式 (Observer Design Pattern)
如果我们需要在对象之间建立一对多的关系,可以使用这种设计模式。

一个类负责跟踪每个观察者对象的状态,当检测到变化时,通知这些观察者对象。

这种模式可用于分布式事件处理。

它属于行为型设计模式。

代码示例:

复制
import java.util.ArrayList;
import java.util.List;


interface Observer {
    void perform(String message);
}


class FirstObserver implements Observer {
    private String name;


    public FirstObserver(String name) {
        this.name = name;
    }


    public void perform(String message) {
        System.out.println(name + " received update: " + message);
    }
}


class SecondObserver implements Observer {
    private String name;


    public SecondObserver(String name) {
        this.name = name;
    }


    public void perform(String message) {
        System.out.println(name + " received update: " + message);
    }
}


class Tracker {
    private List<Observer> observers = new ArrayList<>();


    public void addObserver(Observer observer) {
        observers.add(observer);
    }


    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }


    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.perform(message);
        }
    }
}

单例设计模式 (Singleton Design Pattern)
当我们需要一个类只有一个例时,可以使用单例设计模式。

这通常适用于数据库管理类或缓存管理类等场景。在这些情况下,我们希望只建立一次与数据库或缓存的连接。

代码示例:

复制
public class SingletonDesignPattern {
    private static SingletonDesignPattern instance;


    private SingletonDesignPattern() {}


    public static SingletonDesignPattern getInstance() {
        if (instance == null) {
            instance = new SingletonDesignPattern();
        }
        return instance;
    }
}

注意,上述getInstance()方法不是线程安全的。如果在多线程环境中使用,需要额外处理线程安全问题。

策略设计模式 (Strategy Design Pattern)
策略设计模式通过将算法与其上下文分离并在运行时动态切换算法,促进了代码的灵活性和可维护性。

它属于行为型设计模式。

这种模式允许我们在运行时动态地改变算法,从而提高了代码的可扩展性。

工厂设计模式 (Factory Design Pattern)
如果一个类有多个子类,并且我们需要根据某些输入选择具体的子类,可以使用工厂设计模式。

这种模式避免了父类和子类之间的紧耦合。

它是一种创建型设计模式,可以定义一个接口或抽象类用于创建对象,但例化的类由子类决定。

代码示例:

复制
interface Shape {
    void draw();
}


class Circle implements Shape {
    public void draw() {
        System.out.println("This is a circle");
    }
}


class Rectangle implements Shape {
    public void draw() {
        System.out.println("This is a rectangle");
    }
}


class ShapeFactory {
    public Shape getShape(String shapeType) {
        switch(shapeType){
            case "CIRCLE":
                return new Circle();
            case "RECTANGLE":
                return new Rectangle();
            default:
                return null;
        }
    }
}

构建器设计模式 (Builder Design Pattern)
构建器设计模式通过一步步构建对象,保持代码的简洁性。它将对象的构造过程与表示过程分离。

这种模式特别适合对象构造过程复杂或有多种创建方式的情况。

我们可以通过创建一个静态内部类,并赋予其与外部类相同的属性,来现这种模式。

代码示例:

复制
public class Order {


    private final List<Item> items;
    private final String customerName;
    private final Address deliveryAddress;


    private Order(List<Item> items, String customerName, Address deliveryAddress) {
        this.items = items;
        this.customerName = customerName;
        this.deliveryAddress = deliveryAddress;
    }


    public static class Builder {
        private List<Item> items = new ArrayList<>();
        private String customerName;
        private Address deliveryAddress;


        public Builder addItem(Item item) {
            items.add(item);
            return this;
        }


        public Builder setCustomerName(String customerName) {
            this.customerName = customerName;
            return this;
        }


        public Builder setDeliveryAddress(Address deliveryAddress) {
            this.deliveryAddress = deliveryAddress;
            return this;
        }


        public Order build() {
            return new Order(items, customerName, deliveryAddress);
        }
    }
}

注意,Order类的构造方法被设置为私有,并且未提供任何 setter 方法。这强制我们使用 Builder 类,增强了代码的灵活性和可维护性。

总结
以上介绍了几种在组织中广泛使用的设计模式。此外,还有装饰器模式、适配器模式、外观模式等设计模式。

掌握这些设计模式可以极大地提高软件开发效率,帮助我们更好地管理复杂性,并编写出灵活、可复用且干净的代码。

除了这几个方面,大数据治理的要素在其他方面的表现也是比较良好,倍受大家的关注和研究。悦数图数据库是一款完全自主研发的国产图数据库和原生分布式图数据库,具有高性能,易扩展,安全稳定,自主可控的特点.万亿级数据仅需毫秒级查询延时,应用于金融风控,实时推荐,知识图谱等业务场景。https://www.yueshu.com.cn/

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|墨玲承奔网络公司

GMT+8, 2025-4-28 04:10 , Processed in 0.131414 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表