简单工厂模式
一个抽象接口,多个抽象接口实现类,一个工厂类
/**
简单工厂模式
一个抽象接口,多个抽象接口实现类,一个工厂类
**/
public abstract class Car{
public abstract void run();
public abstract void stop();
}
public class Ford extends Car{
public void run(){
System.out.println("Ford is running...");
}
public void stop(){
System.out.println("Ford is stopping...");
}
}
public class Benz extends Car{
public void run(){
System.out.println("Benz is running...");
}
public void stop(){
System.out.println("Benz is stopping...");
}
}
public class Factory{
public static Car getCarInstance(String type){
Car c = null;
if("Benz".equals(type)){
c = new Benz();
}else if("Ford".equals(type)){
c= new Ford();
}
return c;
}
}
public class Test{
public static void main(String[] args){
Car c = Factory.getCarInstance("Benz");
if(c != null){
c.run();
c.stop();
}
}
}
工厂模式
工厂模式的四个角色:抽象工厂接口,抽象工厂接口实现类,抽象产品接口,抽象产品实现类
/**
工厂模式
四个角色:抽象工厂接口,抽象工厂接口实现类,抽象产品接口,抽象产品实现类
**/
public interface Moveable{
public void move();
}
public class Car implements Moveable{
public void move(){
System.out.println("Car is moving");
}
}
public class Bicycle implements Moveable{
public void move(){
System.out.println("Bicycle is moving");
}
}
public abstract class VehicleFactory{
public abstract Moveable create();
}
public class CarFactory extends VehicleFactory{
public Moveable create(){
return new Car();
}
}
public class BicycleFactory extends VehicleFactory{
public Moveable create(){
return new Bicycle();
}
}
public class Test{
public static void main(String[] args){
VehicleFactory f = new CarFactory();
Moveable m = f.create();
m.move();
}
}
抽象工厂模式
抽象工厂模式与工厂模式的不同在于,工厂模式的工厂只能生产单一的产品,而抽象工厂模式可以生产多种产品
/**
抽象工厂模式
抽象工厂模式与工厂模式的不同在于,工厂模式的工厂只能生产单一的产品,而抽象工厂模式可以生产多种产品
**/
public abstract class AbstractFactory{
public Car createCar();
public Bicycle CreateBicycle();
public Food CreateFood();
}
public class DefaultFactory extends AbstractFactory{
public Car createCar(){
return new Car();
}
public Bicycle CreateBicycle(){
return new Bicycle();
}
public Food CreateFood(){
return new Food();
}
}
public class Test{
public static void main(String[] args){
AbstractFactory f = new DefaultFactory();
Car c = f.createCar();
Bicycle b = f.createBicycle();
Food food = f.createFood();
}
}