设计模式是软件开发中的重要指导原则,它们分别是单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则和迪米特法则。六大原则是设计模式使用的基础,在使用设计模式时,应该牢记这六大原则。
在编程领域,设计模式是一种被广泛认可的可复用解决方案,它为软件开发人员提供了一种在特定场景下解决问题的方法,作为一名优秀的评测编程专家,我们有必要深入了解设计模式,以便在实际项目中灵活运用,本文将详细介绍13种常见的设计模式,并通过实例演示如何应用这些设计模式来提高代码质量和可维护性。
我们来了解一下什么是设计模式,设计模式是一种在特定场景下解决软件设计问题的通用可复用解决方案,它们为开发者提供了一种在面对相似问题时可以重复使用的解决方案,从而提高了开发效率,设计模式通常包括三部分:问题描述、解决方案和结构化表示。
我们将逐一介绍13种常见的设计模式:
1、单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。
public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
2、工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
public interface Shape { void draw(); } public class Circle implements Shape { @Override public void draw() { System.out.println("Draw a circle"); } } public class ShapeFactory { public Shape getShape(String shapeType) { if (shapeType == null) { return null; } else if (shapeType.equalsIgnoreCase("CIRCLE")) { return new Circle(); } return null; } }
3、抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
public interface AbstractFactory { Shape getShape(String shapeType); } public class ShapeFactory1 implements AbstractFactory { @Override public Shape getShape(String shapeType) { if (shapeType == null) { return null; } else if (shapeType.equalsIgnoreCase("CIRCLE")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("SQUARE")) { return new Square(); } else if (shapeType.equalsIgnoreCase("TRIANGLE")) { return new Triangle(); } return null; } }
4、建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
public class ProductBuilder { private String partA; private String partB; private String partC; public ProductBuilder setPartA(String partA) { this.partA = partA; return this; } public ProductBuilder setPartB(String partB) { this.partB = partB; return this; } public ProductBuilder setPartC(String partC) { this.partC = partC; return this; } public Product build() { return new Product(partA, partB, partC); } }
5、原型模式(Prototype):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象,适用于创建大量具有相同特征和行为的对象。
public abstract class Shape implements Cloneable, Serializable {}