一、 工厂方法模式:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
参照简单工厂的学习,看下java示例。
java例子:
//工厂接口
public interface CarFactory {
public Car choseCar();
}
//MaseratiFactory
public class MaseratiFactory implements CarFactory{
@Override
public Car choseCar() {
return new Maserati();
}
}
//MercedesFactory
public class MercedesFactory implements CarFactory{
@Override
public Car choseCar() {
return new Mercedes();
}
}
//FactoryTest
public class FactoryTest {
public static void main(String[] args){
CarFactory carFactory = new MaseratiFactory();
Car car = carFactory.choseCar();
car.drive();
}
}
//测试结果
今天开Maserati
二、抽象工厂模式
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂模式,可以理解成在工厂方法模式中基础上,创建多个具体类实例。
java例子:
//city接口
public interface City {
public void arrive();
}
//实现类BeiJing
public class BeiJing implements City{
@Override
public void arrive() {
System.out.println("去北京");
}
}
//实现类ShangHai
public class ShangHai implements City{
@Override
public void arrive() {
System.out.println("去上海");
}
}
//工厂类
public interface CarFactory {
public Car choseCar();
public City choseCity();
}
//MaseratiFactory
public class MaseratiFactory implements CarFactory{
@Override
public Car choseCar() {
return new Maserati();
}
@Override
public City choseCity() {
return new ShangHai();
}
`}
//MercedesFactory
public class MercedesFactory implements CarFactory{
@Override
public Car choseCar() {
return new Mercedes();
}
@Override
public City choseCity() {
return new BeiJing();
}
}
//FactoryTest
public class FactoryTest {
public static void main(String[] args){
CarFactory carFactory = new MaseratiFactory();
Car car = carFactory.choseCar();
car.drive();
City city = carFactory.choseCity();
city.arrive();
}
}
//测试结果
今天开Maserati
去上海
如有错误,请指正。