校园网站平台建设,ppt效果网站,wordpress 如何开发,女生做运营以后的发展创建型-工厂方法
简单工厂 将被创建的对象称为“产品”#xff0c;将生产“产品”对象称为“工厂”#xff1b;如果创建的产品不多#xff0c;且不需要生产新的产品#xff0c;那么只需要一个工厂就可以#xff0c;这种模式叫做“简单工厂”#xff0c;它不属于23中设计…创建型-工厂方法
简单工厂 将被创建的对象称为“产品”将生产“产品”对象称为“工厂”如果创建的产品不多且不需要生产新的产品那么只需要一个工厂就可以这种模式叫做“简单工厂”它不属于23中设计模式之一简单工厂这种模式不符合对拓展开放对修改关闭的开闭原则因为这种设计模式新增产品的时候需要修改工厂类代码 例
简单工厂
/** 简单工厂工厂类*/
public class SimpleFactory {private static SimpleFactory INSTANCE new SimpleFactory();public static SimpleFactory getInstance(){return INSTANCE;}public Car createCar() {return new Car();}public Plane createPlane() {return new Plane();}public Train creatTrain(){return new Train();}
}简单工厂使用
public class main {public static void main(String[] args) {SimpleFactory simpleFactory SimpleFactory.getInstance();Car car simpleFactory.createCar();Plane plane simpleFactory.createPlane();Train train simpleFactory.creatTrain();}
}这种模式如果产生一个other交通工具还需要在工厂类中新增creatOther()方法。
工厂方法
角色 抽象工厂提供创建产品的接口调用者通过它访问具体的工厂的工厂方法具体工厂实现抽象工厂中的抽象方法完成具体的创建抽象产品定义产品的规范描述产品的主要特性具体产品实现抽象产品角色定义的接口它与具体工厂一一对应 图解 实现案例
产品抽象类
public interface Vehicle {void go();
}产品具体实现类
public class Car implements Vehicle{Overridepublic void go() {System.out.println(汽车在跑);}
}public class Plane implements Vehicle{Overridepublic void go() {System.out.println(火车在跑);}
}public class Train implements Vehicle{Overridepublic void go() {System.out.println(飞机在飞);}
}抽象工厂类
public interface VehicleFactory {Vehicle create();
}具体工厂类
public class CarFactory implements VehicleFactory{private static CarFactory INSTANCE new CarFactory();Overridepublic Vehicle create() {return new Car();}public static CarFactory getInstance(){return INSTANCE;}
}public class PlaneFactory implements VehicleFactory{private static PlaneFactory INSTANCE new PlaneFactory();Overridepublic Vehicle create() {return new Plane();}public static PlaneFactory getInstance(){return INSTANCE;}
}
public class TrainFactory implements VehicleFactory{private static TrainFactory INSTANCE new TrainFactory();Overridepublic Vehicle create() {return new Train();}public static TrainFactory getInstance(){return INSTANCE;}
}使用
public class main {public static void main(String[] args) {CarFactory carFactory CarFactory.getInstance();Vehicle vehicle carFactory.create();vehicle.go();}
}总结 简单工厂不符合开闭原则。工厂方法每次增加一个产品时都需要增加一个具体类和对应的工厂使系统中类的数量成倍增加增加了系统的复杂度和具体类的依赖