设计模式之4 工厂模式.docx
《设计模式之4 工厂模式.docx》由会员分享,可在线阅读,更多相关《设计模式之4 工厂模式.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、工厂模式的核心在于new. 也就是说,不让使用者直接new一个对象。而是通过一个getInstance来得到这个对象。也就是说,在new的时候,要有权限检查怎么办,有没有这方面的资质?那么对于工厂生成这个对象的时候,不能随便new。1. 单例模式package com.bjsxt.dp.factory;import java.util.ArrayList;import java.util.List;public class Car implements Moveable/单例模式,定义为private的方法private static Car car = new Car();/多例模式,就是用
2、一个数组来存放好多car/private static List cars = new ArrayList();/构造方法为静态private Car()/静态工厂模式public static Car getInstance() return car;public void run() System.out.println(冒着烟奔跑中car.);2. 简单工厂模式有抽象类VehicleFactory:package com.bjsxt.dp.factory;/交通工具的工厂,相当于一个interface,用来实现多态。/在test当中为了灵活实现。public abstract class
3、 VehicleFactory /在这里同样定义了create方法,这个方法的返回值是Moveable类型。abstract Moveable create();有具体实现类 CarFactory和PlaneFactorypackage com.bjsxt.dp.factory;/CarFactory 继承了VehicleFactory 抽象类public class CarFactory extends VehicleFactorypublic Moveable create() return new Car();package com.bjsxt.dp.factory;/飞机的工厂,用工厂
4、来产生plane。public class PlaneFactory extends VehicleFactory/创建方法public Moveable create() /返回一个planereturn new Plane();有接口Moveablepackage com.bjsxt.dp.factory;/可以移动的,各种交通工具。public interface Moveable void run();具体的实现car和plane都实现了Moveable接口package com.bjsxt.dp.factory;import java.util.ArrayList;import ja
5、va.util.List;public class Car implements Moveable/单例模式,定义为private的方法public static Car car = new Car();/多例模式,就是用一个数组来存放好多car/private static List cars = new ArrayList();/构造方法为静态public Car()/静态工厂模式public static Car getInstance() return car;public void run() System.out.println(冒着烟奔跑中car.);package com.bj
6、sxt.dp.factory;public class Plane implements Moveable Overridepublic void run() System.out.println(扇着翅膀前进中plane.);实现关系为: CarFactory和PlaneFactory都继承自VehicleFactory。car 和plane都实现了moveable接口。在VehicleFactory当中的create()方法的返回值是moveable。在这个例子中,可以控制1.生产过程,2,交通工具的生产。使用者如下:package com.bjsxt.dp.factory;public
7、class Test public static void main(String args) /通过VehicleFactory父类的引用来指向子类对象。VehicleFactory factory = new BroomFactory();/返回的结果是对应子类的对象,目前为broom.也就是说,new什么就产生什么Moveable m = factory.create();m.run();3. 抽象工厂模式是简单工厂模式的扩展,就是一口气封装很多项目。在简单工厂模式当中,只封装了一个项目,就是vehicle,而在抽象工厂模式,可以同时封装很多项目,比如本例中,vehicle,food,w
8、eapon。抽象工厂AbstractFactory:package com.bjsxt.dp.factory.abstractfactory;public abstract class AbstractFactory public abstract Vehicle createVehicle();public abstract Weapon createWeapon();public abstract Food createFood();第一个工厂,系列1叫DefaultFactory。package com.bjsxt.dp.factory.abstractfactory;public cl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计模式之4 工厂模式 设计 模式 工厂
限制150内