引言Java编程作为一种广泛使用的编程语言,其设计模式是软件开发中不可或缺的一部分。设计模式提供了一系列可重用的解决方案,用以解决在软件设计过程中经常遇到的问题。本文将深入浅出地解析电子书中的经典设计...
Java编程作为一种广泛使用的编程语言,其设计模式是软件开发中不可或缺的一部分。设计模式提供了一系列可重用的解决方案,用以解决在软件设计过程中经常遇到的问题。本文将深入浅出地解析电子书中的经典设计模式,帮助读者更好地理解和应用这些模式。
工厂模式是一种用于创建对象而不暴露创建逻辑的模式。它通过引入工厂类来负责实例化产品类。以下是一个简单的工厂模式示例:
interface Product { void use();
}
class ConcreteProductA implements Product { public void use() { System.out.println("使用产品A"); }
}
class ConcreteProductB implements Product { public void use() { System.out.println("使用产品B"); }
}
class Factory { public static Product createProduct(String type) { if ("A".equals(type)) { return new ConcreteProductA(); } else if ("B".equals(type)) { return new ConcreteProductB(); } return null; }
}单例模式确保一个类只有一个实例,并提供一个全局访问点。以下是一个简单的单例模式示例:
class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; }
}建造者模式主要用于创建复杂对象的构建过程,它将对象的构建与表示分离。以下是一个简单的建造者模式示例:
class Product { private String partA; private String partB; public void setPartA(String partA) { this.partA = partA; } public void setPartB(String partB) { this.partB = partB; } @Override public String toString() { return "Product{" + "partA='" + partA + '\'' + ", partB='" + partB + '\'' + '}'; }
}
class Builder { private Product product = new Product(); public Builder setPartA(String partA) { product.setPartA(partA); return this; } public Builder setPartB(String partB) { product.setPartB(partB); return this; } public Product build() { return product; }
}原型模式通过复制一个已存在的实例来创建新的实例。以下是一个简单的原型模式示例:
class Prototype implements Cloneable { private String partA; public String getPartA() { return partA; } public void setPartA(String partA) { this.partA = partA; } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); }
}适配器模式用于转换接口以实现不同类协同工作。以下是一个简单的适配器模式示例:
interface Target { void request();
}
class Adaptee { public void specificRequest() { System.out.println("特定请求"); }
}
class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { adaptee.specificRequest(); }
}装饰器模式可以在不改变对象接口的情况下动态地为其添加新的行为或责任。以下是一个简单的装饰器模式示例:
interface Component { void operation();
}
class ConcreteComponent implements Component { @Override public void operation() { System.out.println("执行基本操作"); }
}
class Decorator implements Component { private Component component; public Decorator(Component component) { this.component = component; } @Override public void operation() { component.operation(); enhancedOperation(); } private void enhancedOperation() { System.out.println("增强操作"); }
}观察者模式定义对象间的一对多依赖关系,当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。以下是一个简单的观察者模式示例:
interface Observer { void update();
}
class ConcreteObserver implements Observer { @Override public void update() { System.out.println("观察者收到通知"); }
}
class Subject { private List observers = new ArrayList<>(); public void addObserver(Observer observer) { observers.add(observer); } public void notifyObservers() { for (Observer observer : observers) { observer.update(); } }
} 策略模式定义一系列算法,把它们一个个封装起来,并使它们可以互相替换。以下是一个简单的策略模式示例:
interface Strategy { void execute();
}
class ConcreteStrategyA implements Strategy { @Override public void execute() { System.out.println("执行策略A"); }
}
class ConcreteStrategyB implements Strategy { @Override public void execute() { System.out.println("执行策略B"); }
}
class Context { private Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public void setStrategy(Strategy strategy) { this.strategy = strategy; } public void executeStrategy() { strategy.execute(); }
}本文深入浅出地解析了电子书中的经典设计模式,包括创建型模式、结构型模式和行为型模式。通过这些模式,我们可以更好地理解和解决软件开发中的常见问题。希望本文能对您的Java编程之路有所帮助。