[/code]java
public interface Human {
String getColor();
void talk();
}
public class BlackHuman implements Human {
@Override
public String getColor() {
return "Black";
}
@Override
public void talk() {
System.out.println("Black human is talking.");
}
}
public class WhiteHuman implements Human {
@Override
public String getColor() {
return "White";
}
@Override
public void talk() {
System.out.println("White human is talking.");
}
}
public class YellowHuman implements Human {
@Override
public String getColor() {
return "Yellow";
}
@Override
public void talk() {
System.out.println("Yellow human is talking.");
}
}
public class HumanFactory {
public static Human createHuman(String type) {
if (type.equals("black")) {
return new BlackHuman();
} else if (type.equals("white")) {
return new WhiteHuman();
} else if (type.equals("yellow")) {
return new YellowHuman();
}
return null;
}
}
public class Main {
public static void main(String[] args) {
Human blackHuman = HumanFactory.createHuman("black");
blackHuman.talk(); // Output: Black human is talking.
Human whiteHuman = HumanFactory.createHuman("white");
whiteHuman.talk(); // Output: White human is talking.
Human yellowHuman = HumanFactory.createHuman("yellow");
yellowHuman.talk(); // Output: Yellow human is talking.
}
}
[/code]
工厂方法模式实现:
[/code]java
public interface Human {
String getColor();
void talk();
}
public class BlackHuman implements Human {
@Override
public String getColor() {
return "Black";
}
@Override
public void talk() {
System.out.println("Black human is talking.");
}
}
public class WhiteHuman implements Human {
@Override
public String getColor() {
return "White";
}
@Override
public void talk() {
System.out.println("White human is talking.");
}
}
public class YellowHuman implements Human {
@Override
public String getColor() {
return "Yellow";
}
@Override
public void talk() {
System.out.println("Yellow human is talking.");
}
}
public interface HumanFactory {
Human createHuman();
}
public class BlackHumanFactory implements HumanFactory {
@Override
public Human createHuman() {
return new BlackHuman();
}
}
public class WhiteHumanFactory implements HumanFactory {
@Override
public Human createHuman() {
return new WhiteHuman();
}
}
public class YellowHumanFactory implements HumanFactory {
@Override
public Human createHuman() {
return new YellowHuman();
}
}
public class Main {
public static void main(String[] args) {
HumanFactory blackHumanFactory = new BlackHumanFactory();
Human blackHuman = blackHumanFactory.createHuman();
blackHuman.talk(); // Output: Black human is talking.
HumanFactory whiteHumanFactory = new WhiteHumanFactory();
Human whiteHuman = whiteHumanFactory.createHuman();
whiteHuman.talk(); // Output: White human is talking.
HumanFactory yellowHumanFactory = new YellowHumanFactory();
Human yellowHuman = yellowHumanFactory.createHuman();
yellowHuman.talk(); // Output: Yellow human is talking.
}
}
[/code]
抽象工厂模式实现:
[/code]java
public interface Human {
String getColor();
void talk();
}
public class BlackHuman implements Human {
@Override
public String getColor() {
return "Black";
}
@Override
public void talk() {
System.out.println("Black human is talking.");
}
}
public class WhiteHuman implements Human {
@Override
public String getColor() {
return "White";
}
@Override
public void talk() {
System.out.println("White human is talking.");
}
}
public class YellowHuman implements Human {
@Override
public String getColor() {
return "Yellow";
}
@Override
public void talk() {
System.out.println("Yellow human is talking.");
}
}
public interface AbstractFactory {
Human createBlackHuman();
Human createWhiteHuman();
Human createYellowHuman();
}
public class FactoryA implements AbstractFactory {
@Override
public Human createBlackHuman() {
return new BlackHuman();
}
@Override
public Human createWhiteHuman() {
return new WhiteHuman();
}
@Override
public Human createYellowHuman() {
return new YellowHuman();
}
}
public class FactoryB implements AbstractFactory {
@Override
public Human createBlackHuman() {
return new BlackHuman();
}
@Override
public Human createWhiteHuman() {
return new WhiteHuman();
}
@Override
public Human createYellowHuman() {
return new YellowHuman();
}
}
public class FactoryC implements AbstractFactory {
@Override
public Human createBlackHuman() {
return new BlackHuman();
}
@Override
public Human createWhiteHuman() {
return new WhiteHuman();
}
@Override
public Human createYellowHuman() {
return new YellowHuman();
}
}
public class Main {
public static void main(String[] args) {
AbstractFactory factoryA = new FactoryA();
Human blackHuman = factoryA.createBlackHuman();
blackHuman.talk(); // Output: Black human is talking.
AbstractFactory factoryB = new FactoryB();
Human whiteHuman = factoryB.createWhiteHuman();
whiteHuman.talk(); // Output: White human is talking.
AbstractFactory factoryC = new FactoryC();
Human yellowHuman = factoryC.createYellowHuman();
yellowHuman.talk(); // Output: Yellow human is talking.
}
}
[/code]