Java常用设计模式的分类与概述

作者:社会主义新 |

在软件开发领域,Java作为一种广泛应用的编程语言,拥有庞大的开发者社区和丰富的生态系统。在Java程序设计中,设计模式的应用对于提高代码质量、降低开发复杂度以及保证代码可维护性具有重要意义。设计模式是对在某种环境下共享的面临某种问题的解决方案,这些问题通常涉及软件系统的结构、行为和接口等方面。在Java中,常用的设计模式可以大致分为创建型、结构型和行为型三大类。接下来,我们将对这三大类的设计模式进行分类和概述。

创建型模式

创建型模式主要关注对象的创建过程,通过提供不同的创建对象的方式,来解决对象之间的依赖关系。在Java中,常用的创建型模式有单例模式、工厂模式和原型模式。

1. 单例模式(Singleton Pattern)

单例模式是一种保证一个类仅有一个实例的设计模式,它通常用于确保全局配置、日志系统等资源的高效管理。在Java中,我们可以通过私有化构造方法并提供一个静态方法来创建单例对象,如下所示:

java

public class Singleton {

private static Singleton instance;

private Singleton() {

}

public static synchronized Singleton getInstance() {

if (instance == null) {

instance = new Singleton();

}

return instance;

}

}

2. 工厂模式(Factory Pattern)

工厂模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方式。工厂模式通常用于处理对象的创建过程,将对象的创建与使用解耦,使得客户端可以自由选择合适的对象实例化。在Java中,我们可以使用抽象工厂模式和具体工厂模式来实现工厂模式,如下所示:

java

public abstract class AnimalFactory {

public abstract Animal createAnimal();

}

public class DogFactory extends AnimalFactory {

@Override

public Animal createAnimal() {

Java常用设计模式的分类与概述 图1

Java常用设计模式的分类与概述 图1

return new Dog();

}

}

public class CatFactory extends AnimalFactory {

@Override

public Animal createAnimal() {

return new Cat();

}

}

3. 原型模式(Prototype Pattern)

原型模式是一种创建型设计模式,它通过复制现有的实例来创建新的实例。原型模式通常用于处理简单的对象创建,处理对象的状态、行为等。在Java中,我们可以通过继承现有对象来实现原型模式,如下所示:

java

public class Animal {

private String name;

public Animal(String name) {

this.name = name;

}

public void setName(String name) {

this.name = name;

}

public String getName() {

return name;

}

}

public class Dog extends Animal {

public Dog(String name) {

super(name);

}

@Override

public void setName(String name) {

super.setName(name);

}

@Override

public String getName() {

return super.getName();

}

}

结构型模式

结构型模式关注对象之间的依赖关系,通过调整对象之间的组合方式来解决系统的问题。在Java中,常用的结构型模式有适配器模式、桥接模式和组合模式。

1. 适配器模式(Adapter Pattern)

适配器模式是一种结构型设计模式,它通过将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以一起工作。在Java中,我们可以通过实现适配器模式,将不兼容的接口进行适配,如下所示:

java

public class Adapter implements Animal {

private Animal realAnimal;

public Adapter(Animal realAnimal) {

this.realAnimal = realAnimal;

}

@Override

public void setName(String name) {

realAnimal.setName(name);

}

@Override

public String getName() {

return realAnimal.getName();

}

}

public interface Animal {

void setName(String name);

String getName();

}

public class Dog implements Animal {

@Override

public void setName(String name) {

System.out.println("Dog: " name);

}

@Override

public String getName() {

return "Dog";

}

}

public class Adapter implements Animal {

private Animal realAnimal;

public Adapter(Animal realAnimal) {

this.realAnimal = realAnimal;

}

@Override

public void setName(String name) {

realAnimal.setName(name);

}

@Override

public String getName() {

return realAnimal.getName();

}

}

2. 桥接模式(Bridge Pattern)

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。在Java中,我们可以通过实现桥接模式,将不兼容的接口进行桥接,如下所示:

java

public abstract class Vehicle {

public abstract void start();

}

public class Car extends Vehicle {

@Override

public void start() {

System.out.println("Car started");

}

}

public class Motorcycle extends Vehicle {

@Override

public void start() {

System.out.println("Motorcycle started");

}

}

public abstract class BridgingVehicle extends Vehicle {

public abstract void connect();

}

public class CarBridge extends BridgingVehicle {

@Override

public void connect() {

System.out.println("CarBridge connected");

}

}

public class MotorcycleBridge extends BridgingVehicle {

@Override

public void connect() {

System.out.println("MotorcycleBridge connected");

}

}

3. 组合模式(Composite Pattern)

组合模式是一种结构型设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。在Java中,我们可以通过实现组合模式,将对象组合成树形结构进行管理,如下所示:

java

public abstract class Animal {

public abstract void eat();

}

public class Dog extends Animal {

@Override

public void eat() {

System.out.println("Dog ate");

}

}

public class Cat extends Animal {

@Override

public void eat() {

System.out.println("Cat ate");

}

}

public abstract class Vehicle {

public abstract void drive();

}

public class Car extends Vehicle {

@Override

public void drive() {

System.out.println("Car drove");

}

}

public class Motorcycle extends Vehicle {

@Override

public void drive() {

System.out.println("Motorcycle drove");

}

}

行为型模式

行为型模式关注对象之间的通信,通过定义一系列接口和回调来实现对象之间的松耦合。在Java中,常用的行为型模式有命令模式、解释器模式和迭代器模式。

1. 命令模式(Command Pattern)

命令模式是一种行为型设计模式,它将请求封装成一个对象,从而使得对象可以拥有不同的请求,并且能够将请求对象放入栈中。

(本文所有信息均为虚构,不涉及真实个人或机构。)

【用户内容法律责任告知】根据《民法典》及《信息网络传播权保护条例》,本页面实名用户发布的内容由发布者独立担责。巨中成企业家平台系信息存储空间服务提供者,未对用户内容进行编辑、修改或推荐。该内容与本站其他内容及广告无商业关联,亦不代表本站观点或构成推荐、认可。如发现侵权、违法内容或权属纠纷,请按《平台公告四》联系平台处理。