SkillAgentSearch skills...

DesignPattern

📚 Java 23种设计模式全归纳

Install / Use

/learn @youlookwhat/DesignPattern
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

DesignPattern

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

设计模式分为三种类型,共23种:

参照Hongyang、菜鸟教程等处文章所写。如有错误欢迎指正,如有侵权,请联系我删除。


Blog Catalogue:

Source Code

Project Picture

Pattern Analysis

1. 观察者模式

定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。

  • 对于JDK或者Andorid中都有很多地方实现了观察者模式,比如XXXView.addXXXListenter , 当然了 XXXView.setOnXXXListener不一定是观察者模式,因为观察者模式是一种一对多的关系,对于setXXXListener是1对1的关系,应该叫回调。

  • 专题接口:Subject.java ;

    /**
     * 注册一个观察者
     */
    public void registerObserver(Observer observer);
    
    /**
     * 移除一个观察者
     */
    public void removeObserver(Observer observer);
    
    /**
     * 通知所有观察者
     */
    public void notifyObservers();
    
  • 3D服务号的实现类:ObjectFor3D.java

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    @Override
    public void removeObserver(Observer observer) {
        int index = observers.indexOf(observer);
        if (index >= 0) {
            observers.remove(index);
        }
    }
    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(msg);
        }
    }
    /**
     * 主题更新信息
     */
    public void setMsg(String msg) {
        this.msg = msg;
        notifyObservers();
    }
    
  • 所有观察者需要实现此接口:Observer.java

     public ObserverUser1(Subject subject) {
        subject.registerObserver(this);
    }
    @Override
    public void update(String msg) {
        Log.e("-----ObserverUser1 ", "得到 3D 号码:" + msg + ", 我要记下来。");
    }
    
  • 最后测试:ObserverActivity.java

    // 创建服务号
    objectFor3D = new ObjectFor3D();
    // 创建两个订阅者
    observerUser1 = new ObserverUser1(objectFor3D);
    observerUser2 = new ObserverUser2(objectFor3D);
    // 两个观察者,发送两条信息
    objectFor3D.setMsg("201610121 的3D号为:127");
    objectFor3D.setMsg("20161022 的3D号为:000");
    

2. 工厂模式

简单列一下这个模式的家族:

  • 1、静态工厂模式

    • 这个最常见了,项目中的辅助类,TextUtil.isEmpty等,类+静态方法。
  • 2、简单工厂模式(店里买肉夹馍)

    • 定义:通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
    • 根据类型直接创建肉夹馍:SimpleRoujiaMoFactory.java
    public RoujiaMo creatRoujiaMo(String type) {
        RoujiaMo roujiaMo = null;
        switch (type) {
            case "Suan":
                roujiaMo = new ZSuanRoujiaMo();
                break;
            case "La":
                roujiaMo = new ZLaRoujiaMo
    

Related Skills

View on GitHub
GitHub Stars5.1k
CategoryDesign
Updated7h ago
Forks1.5k

Languages

Java

Security Score

80/100

Audited on Mar 30, 2026

No findings