工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
抽象类
package FactoryPattern;
public abstract class Penguin {
public String name;
public Penguin(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void eating() {
System.out.println(name + "吃饭");
}
public void sleeping() {
System.out.println(name + "睡觉");
}
public abstract void beating();
public void everyday() {
eating();
sleeping();
beating();
}
}
子类:LittlePenguin
package FactoryPattern;
public class LittlePenguin extends Penguin {
public LittlePenguin(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void beating() {
System.out.println(name + "用小翅膀打");
}
}
子类:MiddlePenguin
package FactoryPattern;
public class MiddlePenguin extends Penguin{
public MiddlePenguin(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void beating() {
System.out.println(name + "用肚子打");
}
}
构建工厂
package FactoryPattern;
import java.util.HashMap;
import java.util.Map;
public class PenguinFactory {
private static final Map<String,Penguin> map = new HashMap<>();
static {
map.put("littlePenguin", new LittlePenguin("小企鹅"));
map.put("middlePenguin", new MiddlePenguin("中企鹅"));
}
public static Penguin getPenguin(String name) {
return map.get(name);
}
}
测试类:
package FactoryPattern;
public class Test {
public static void main(String[] args) {
Penguin littlePenguin = PenguinFactory.getPenguin("littlePenguin");
littlePenguin.everyday();
Penguin middlePenguin = PenguinFactory.getPenguin("middlePenguin");
middlePenguin.everyday();
}
}
测试结果:
小企鹅吃饭
小企鹅睡觉
小企鹅用小翅膀打
中企鹅吃饭
中企鹅睡觉
中企鹅用肚子打