关于人工智能:102-代码重构与设计模式

代码重构和设计模式是软件工程中两个重要的概念,它们有助于进步代码的可读性、可维护性和可扩展性。在本节中,咱们将简要介绍代码重构的根本办法和一些罕用的设计模式。

10.2.1. 代码重构

代码重构是在不扭转软件内部行为的前提下,改良软件内部结构的过程。以下是一些常见的重构办法:

  1. 提取办法(Extract Method):将一段简单的代码提取到一个新的办法中。
  2. 内联办法(Inline Method):将一个简略的办法的实现间接替换到调用它的中央。
  3. 提取类(Extract Class):将一个类的局部性能提取到一个新的类中。
  4. 合并类(Merge Class):将两个类的性能合并到一个类中。
  5. 重命名(Rename):为变量、办法或类抉择更有意义的名称。

在进行代码重构时,请务必编写并运行测试用例,确保重构后的代码行为与重构前统一。

10.2.2. 设计模式

设计模式是在面向对象软件设计中重复呈现的一类问题的通用解决方案。以下是一些罕用的设计模式:

单例模式(Singleton)

单例模式确保一个类只有一个实例,并提供一个全局拜访点。以下是一个单例模式的实现:

public class Singleton {
    private static final Singleton INSTANCE = new Singleton();

    private Singleton() {
    }

    public static Singleton getInstance() {
        return INSTANCE;
    }
}
工厂办法模式(Factory Method)

工厂办法模式定义了一个创建对象的接口,让子类决定实例化哪个类。以下是一个工厂办法模式的例子:

public interface Animal {
    void speak();
}

public class Dog implements Animal {
    @Override
    public void speak() {
        System.out.println("Woof!");
    }
}

public class Cat implements Animal {
    @Override
    public void speak() {
        System.out.println("Meow!");
    }
}

public abstract class AnimalFactory {
    public abstract Animal createAnimal();

    public static AnimalFactory createFactory(String type) {
        if ("dog".equalsIgnoreCase(type)) {
            return new DogFactory();
        } else if ("cat".equalsIgnoreCase(type)) {
            return new CatFactory();
        }
        throw new IllegalArgumentException("Invalid type: " + type);
    }
}

public class DogFactory extends AnimalFactory {
    @Override
    public Animal createAnimal() {
        return new Dog();
    }
}

public class CatFactory extends AnimalFactory {
    @Override
    public Animal createAnimal() {
        return new Cat();
    }
}

应用工厂办法模式的代码:

public class Main {
    public static void main(String[] args) {
        AnimalFactory factory = AnimalFactory.createFactory("dog");
        Animal animal = factory.createAnimal();
        animal.speak(); // 输入 "Woof!"
    }
}
观察者模式(Observer)

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象,当主题对象发生变化时,告诉所有观察者。

public interface Observer {
    void update(String message);
}

public class ConcreteObserver implements Observer {
    private String name;

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

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

public interface Subject {
    void registerObserver(Observer observer);

    void unregisterObserver(Observer observer);

    void notifyObservers(String message);
}

public class ConcreteSubject implements Subject {
    private List<Observer> observers = new ArrayList<>();

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void unregisterObserver(Observer observer) {
        observers.remove(observer);
    }

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

应用观察者模式的代码:

public class Main {
    public static void main(String[] args) {
        ConcreteSubject subject = new ConcreteSubject();

        Observer observer1 = new ConcreteObserver("Observer 1");
        Observer observer2 = new ConcreteObserver("Observer 2");

        subject.registerObserver(observer1);
        subject.registerObserver(observer2);

        subject.notifyObservers("Hello, World!"); // 输入 "Observer 1 received message: Hello, World!" 和 "Observer 2 received message: Hello, World!"
    }
}

以上只是简要介绍了代码重构和设计模式的一些基本概念,要想真正把握这些常识,须要在理论的编程过程中一直地学习和实际。如果你在编程过程中遇到问题,无妨尝试应用重构和设计模式来改良代码的构造,进步代码的品质。
举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理