你好呀,我是小邹。
引言
设计模式是软件工程中一种常见的解决方案模板,用于解决特定类型的问题。在Java编程中,设计模式不仅可以提高代码的可读性和可维护性,还能增强系统的灵活性和扩展性。本文将重点探讨工厂模式和策略模式,这两种模式在实际开发中极为常见,能够有效地处理对象创建和算法封装的问题。
工厂模式:灵活的对象创建
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建产品对象而不必指定具体类,而是使用一个共同的接口。工厂模式把对象的创建封装在一个独立的工厂类中,这样做的好处是可以随时添加新的产品类,而不需要修改现有代码。
实现步骤:
- 定义一个接口:这是所有产品类的父接口,它描述了产品对象的通用接口。
- 创建产品类:实现上述接口,每个产品类代表一个具体的产品。
- 创建工厂类:工厂类包含一个静态方法,该方法根据传入的参数返回一个产品对象。
示例代码:
// 定义接口
interface Shape {
void draw();
}
// 具体产品类
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("Drawing a square");
}
}
// 工厂类
class ShapeFactory {
public static Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}
// 客户端代码
public class FactoryPatternDemo {
public static void main(String[] args) {
Shape shape1 = ShapeFactory.getShape("CIRCLE");
shape1.draw();
Shape shape2 = ShapeFactory.getShape("SQUARE");
shape2.draw();
}
}
策略模式:封装算法的可替换性
策略模式是一种行为型设计模式,它使你能在运行时改变对象的行为。在策略模式中,算法本身被封装在自己的类中,这些类可以相互替换,就像不同的策略一样。
实现步骤:
- 定义策略接口:定义所有支持的算法的公共接口。
- 创建策略类:实现策略接口,每个策略类都提供了一个具体的算法实现。
- 使用策略:定义一个上下文类,它使用策略接口进行操作。
示例代码:
// 定义策略接口
interface PaymentStrategy {
void pay(int amount);
}
// 具体策略类
class CreditCardStrategy implements PaymentStrategy {
@Override
public void pay(int amount) {
System.out.println(amount + " paid with credit/debit card");
}
}
class PayPalStrategy implements PaymentStrategy {
@Override
public void pay(int amount) {
System.out.println(amount + " paid using PayPal.");
}
}
// 上下文类
class ShoppingCart {
private List<Item> items;
private PaymentStrategy paymentStrategy;
public ShoppingCart(PaymentStrategy paymentStrategy){
this.paymentStrategy = paymentStrategy;
items = new ArrayList<Item>();
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
// 客户端代码
public class StrategyPatternDemo {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart(new CreditCardStrategy());
cart.checkout(200);
cart = new ShoppingCart(new PayPalStrategy());
cart.checkout(200);
}
}
结论
工厂模式和策略模式都是Java设计模式中非常实用的部分。工厂模式提供了一种创建对象的灵活方式,而策略模式则允许在运行时更改对象的行为。理解并熟练应用这些模式,将有助于开发出更加模块化、可扩展和易于维护的软件系统。

评论区 0