引言
Java計劃形式是一套經過驗證的、可重用的代碼計劃處理打算,旨在處理軟體開辟過程中罕見的成績。經由過程控制計劃形式,開辟者可能編寫出愈加可保護、可擴大年夜跟可重用的代碼。本文將深刻剖析Java計劃形式,並經由過程實戰案例停止深度分析,幫助讀者更好地懂得跟利用這些計劃形式。
一、創建型形式
1. 單例形式(Singleton Pattern)
單例形式確保一個類只有一個實例,並供給全局拜訪點。實現方法包含靜態外部類、羅列跟雙檢鎖等。
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
2. 工廠形式(Factory Pattern)
工廠形式供給創建東西的介面,但不指定具體類。罕見實現包含簡單工廠、工廠方法跟抽象工廠形式。
public interface Product {
void use();
}
public class ConcreteProductA implements Product {
public void use() {
System.out.println("利器具體產品A");
}
}
public class ConcreteProductB implements Product {
public void use() {
System.out.println("利器具體產品B");
}
}
public 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;
}
}
3. 制作者形式(Builder Pattern)
制作者形式將複雜東西的構建與它的表示分別,使得同樣的構建過程可能創建差其余表示。
public class Person {
private String name;
private int age;
private String address;
public static class Builder {
private String name;
private int age;
private String address;
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
public Builder setAddress(String address) {
this.address = address;
return this;
}
public Person build() {
return new Person(this);
}
}
private Person(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
}
}
二、構外型形式
1. 適配器形式(Adapter Pattern)
適配器形式將一個類的介面轉換成客戶期望的另一個介面,使得底本介面不兼容的類可能一起任務。
public interface Target {
void request();
}
public class Adaptee {
public void specificRequest() {
System.out.println("特有功能");
}
}
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specificRequest();
}
}
2. 橋接形式(Bridge Pattern)
橋接形式將抽象部分與實現部分分別,使它們都可能獨破地變更。
public abstract class Abstraction {
protected Implementor implementor;
public Abstraction(Implementor implementor) {
this.implementor = implementor;
}
public abstract void operation();
}
public class RefinedAbstraction extends Abstraction {
@Override
public void operation() {
System.out.println("RefinedAbstraction operation");
implementor.operation();
}
}
public abstract class Implementor {
public abstract void operation();
}
public class ConcreteImplementorA extends Implementor {
@Override
public void operation() {
System.out.println("ConcreteImplementorA operation");
}
}
三、行動型形式
1. 戰略形式(Strategy Pattern)
戰略形式定義一系列演算法,將每一個演算法封裝起來,並使它們可能相互調換。
public interface Strategy {
void execute();
}
public class ConcreteStrategyA implements Strategy {
@Override
public void execute() {
System.out.println("履行戰略A");
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void execute() {
System.out.println("履行戰略B");
}
}
public 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計劃形式,並經由過程實戰案例停止了深度分析。經由過程進修本文,讀者可能更好地懂得跟利用Java計劃形式,從而進步代碼品質,降落保護本錢。在現實開辟過程中,抉擇合適的計劃形式,可能使得代碼愈加清楚、易保護,進步開辟效力。