色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java策略和工廠

錢良釵1年前7瀏覽0評論

Java是一門面向?qū)ο蟮木幊陶Z言,很多時(shí)候我們需要針對不同的情況采取不同的處理方式,如何靈活的處理這些情況呢?這就需要用到Java中的策略模式和工廠模式。

策略模式

策略模式是一種行為設(shè)計(jì)模式,它允許您定義一系列的算法,將每個(gè)算法封裝起來,并根據(jù)需要在運(yùn)行時(shí)動(dòng)態(tài)地選擇其中一個(gè)算法。

public interface DiscountStrategy {
double getPrice(double price);
}
public class VIPDiscountStrategy implements DiscountStrategy {
@Override
public double getPrice(double price) {
return price * 0.8;
}
}
public class RegularDiscountStrategy implements DiscountStrategy {
@Override
public double getPrice(double price) {
return price * 0.9;
}
}
public class PriceCalculator {
private DiscountStrategy discountStrategy;
public void setDiscountStrategy(DiscountStrategy discountStrategy) {
this.discountStrategy = discountStrategy;
}
public double calculatePrice(double price) {
return discountStrategy.getPrice(price);
}
}
public class Main {
public static void main(String[] args) {
PriceCalculator calculator = new PriceCalculator();
DiscountStrategy discountStrategy = new VIPDiscountStrategy();
calculator.setDiscountStrategy(discountStrategy);
double price = 100.0;
double result = calculator.calculatePrice(price);
System.out.println(result);
}
}

在上面的代碼中,我們定義了折扣策略接口DiscountStrategy,包括VIP折扣策略和普通會(huì)員折扣策略。我們通過PriceCalculator來計(jì)算價(jià)格,根據(jù)傳遞進(jìn)來的折扣策略動(dòng)態(tài)的計(jì)算折扣之后的價(jià)格。

工廠模式

工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對象的最佳方式。

public class CalculatorFactory {
public Calculator createCalculator(String type) {
if (type.equals("add")) {
return new AddCalculator();
} else if (type.equals("subtract")) {
return new SubtractCalculator();
} else if (type.equals("multiply")) {
return new MultiplyCalculator();
} else if (type.equals("divide")) {
return new DivideCalculator();
} else {
throw new RuntimeException("unsupported calculator type");
}
}
}
public interface Calculator {
int calculate(int a, int b);
}
public class AddCalculator implements Calculator {
@Override
public int calculate(int a, int b) {
return a + b;
}
}
public class SubtractCalculator implements Calculator {
@Override
public int calculate(int a, int b) {
return a - b;
}
}
public class MultiplyCalculator implements Calculator {
@Override
public int calculate(int a, int b) {
return a * b;
}
}
public class DivideCalculator implements Calculator {
@Override
public int calculate(int a, int b) {
return a / b;
}
}
public class Main {
public static void main(String[] args) {
CalculatorFactory calculatorFactory = new CalculatorFactory();
Calculator calculator = calculatorFactory.createCalculator("add");
int result = calculator.calculate(1, 2);
System.out.println(result);
}
}

上面的代碼中,我們定義了一個(gè)計(jì)算器工廠CalculatorFactory,它根據(jù)不同的類型創(chuàng)建出不同的計(jì)算器對象。每個(gè)計(jì)算器對象都實(shí)現(xiàn)了Calculator接口,實(shí)現(xiàn)了具體的計(jì)算方法。我們通過計(jì)算器工廠創(chuàng)建出不同的計(jì)算器對象,然后使用它們進(jìn)行運(yùn)算。