简单工厂模式

来源:互联网 发布:软件编辑器手机版 编辑:程序博客网 时间:2024/05/20 14:24

工厂的作用:

可以自主生产自己的产品 而不在依赖于new()

定义一个moveable接口 

Movable.java

package com.fgh.dp.factory;/** * 定义moveable接口 任意具有可以移动特性的类都可以实现该接口 *  比如汽车 飞机等 * @author fgh * */public interface Moveable {void run();}

定义一个实现类Car.java

package com.fgh.dp.factory;//import java.util.ArrayList;//import java.util.List;/** * 实现moveable接口 */public class Car implements Moveable {// 单例模式private static Car car = new Car();// 多例模式// private static List<Car> cars = new ArrayList<Car>();/** * 如果不想让用户自己生产car 就设置成private */public Car() {}/** * 在这个方法里面可以添加逻辑 判断司机得到车需要的条件 比如身份证 驾照等 *  ---又称静态工厂模式 *  * @return */public static Car getInstance() {return car;}public void run() {System.out.println("开着车回老家,路途中。。。。");}}
定义一个抽象工厂类 该类可以产生所有实现具有run特性的交通工具

VehicleFactory.java

package com.fgh.dp.factory;/** * 定义一个抽象工厂类 为所有生产交通工具类的父类 * 使程序可以在某个维度上进行扩展 不仅可以产生新的交通工具 * 而且还可以控制产生新的交通工具的生产 *  * @author fgh * */public abstract class VehicleFactory {abstract Moveable create();}

定义实现该抽象工厂的实现类 CarFactory.java

package com.fgh.dp.factory;/** * 抽象工厂类的实现类 专门生产汽车的工厂 * @author fgh * */public class CarFactory extends VehicleFactory{/** * 重写父类方法 */@Overridepublic Moveable create() {return new Car();}}
测试方法:Test.java

package com.fgh.dp.factory;public class Test {public static void main(String[] args) {/** * 这种方式 司机可以拥有多辆车 通过new 得到  * 如果想要让司机不能自己随便得到的车的话  * 可以通过在方法里 提供一个私有构造方法 实现 这样 * 就不能通过new得到 但是 不能new的话 用户得不到车 *  */// Car c = new Car();// Car.getInstance().run();// c.run();/** * 通过new方法 产生任意的交通工具 */// Moveable m = new Plane();// m.run();/** * 通过工厂的方式 产生任意的交通工具 */VehicleFactory factory = new CarFactory();Moveable f = factory.create();f.run();}}


运行结果:

开着车回老家,路途中。。。。

生产具体交通类和抽象工厂类关系图


该过程使用了抽象类和接口,关于抽象类的接口什么时候使用的说明:

抽象类和接口的使用:

1、这个概念确实在我们脑子中存在的 就用抽象类2、如果这个概念仅仅是某个方面的一个特性 比如会飞的、会唱的等 像这样的就设计成接口3、在不清楚是设计成抽象类还是设计成接口的时候,一般都设计成接口 原因是实现了这个接口之     后 还可以从其他的抽象类继承 更灵活



	
				
		
原创粉丝点击