工厂实际模式

工厂模式:(普通工厂模式,多个工厂方法模式,静态工厂方法模式)在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象。工厂模式根据不同的参数来实现不同的分配方案和创建对象。在工厂模式中,我们创建对象时不会暴露创建对象逻辑,并且是通过使用一个共同接口来指向新创建的对象。

1.普通工厂模式:
// 二者共同的接口
public interface Human{
public void eat();
public void sleep();
public void beat();
}

// 创建实现类 Male
public class Male implements Human{
public void eat(){
System.out.println("Male can eat.");
}
public void sleep(){
System.out.println("Male can sleep.");
}
public void beat(){
System.out.println("Male can beat.");
}
}
//创建实现类 Female
public class Female implements Human{
public void eat(){
System.out.println("Female can eat.");
}
public void sleep(){
System.out.println("Female can sleep.");
}
public void beat(){
System.out.println("Female can beat.");
}
}

// 创建普通工厂类
public class HumanFactory{
public Human createHuman(String gender){
if( gender.equals("male") ){
return new Male();
}else if( gender.equals("female")){
return new Female();
}else {
System.out.println("请输入正确的类型!");
return null;
}
}
}

// 工厂测试类
public class FactoryTest {
public static void main(String[] args){
HumanFactory factory = new HumanFactory();
Human male = factory.createHuman("male");
male.eat();
male.sleep();
male.beat();
}
}

2.多个工厂方法模式
// 多个工厂方法
public class HumanFactory{
public Male createMale() {
return new Male();
}
public Female createFemale() {
return new Female();
}
}

// 工厂测试类
public class FactoryTest {
public static void main(String[] args){
HumanFactory factory = new HumanFactory();
Human male = factory.createMale();
Human female = factory.createFemale();
male.eat();
male.sleep();
male.beat();
female.eat();
female.sleep();
female.beat();
}
}

静态工厂方法模式:省去创建工厂实例,直接通过工厂类调用静态方法实现实例化
// 多个工厂方法
public class HumanFactory{
public static Male createMale() {
return new Male();
}
public static Female createFemale() {
return new Female();
}
}

// 工厂测试类
public class FactoryTest {
public static void main(String[] args){
Human male = HumanFactory.createMale();
male.eat();
male.sleep();
male.beat();
}
}

原文地址:https://www.cnblogs.com/Jason-MLiu/p/8406553.html