简单工厂模式

工厂的作用:

 

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

定义一个moveable接口

Movable.java

 

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

 

 

<pre name="code" class="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("开着车回老家,路途中。。。。"); } }</pre><pre name="code" class="java">定义一个抽象工厂类 该类可以产生所有实现具有run特性的交通工具</pre>

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{ /** * 重写父类方法 */ @Override public Moveable create() { return new Car(); } }<pre name="code" class="java"></pre><pre name="code" class="java"></pre>测试方法: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、在不清楚是设计成抽象类还是设计成接口的时候,一般都设计成接口 原因是实现了这个接口之 后 还可以从其他的抽象类继承 更灵活

 

 

 

 
 
 
 
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值