Java设计模式----工厂模式(二)
来源:互联网 发布:淘宝主图psd 编辑:程序博客网 时间:2024/06/05 18:17
在工厂模式(一)中提到的问题:新增SuperCar类是必然的,能否不修改工厂类就能完成所需功能?
- 工厂模式的实现
- 工厂模式与简单工厂模式的区别
工厂模式的实现
实现步骤
1、定制抽象产品接口,如ICar
2、定制其具体子类,如类TopCar(高档车)、MidCar(中档车)、LowCar(低档车)
3、定制抽象工厂类(或接口),如AbstractFactory,提供一个create()抽象方法
4、定制具体工厂子类,如TopFacyory、MidFactory、LowFactory
//定义小汽车接口:ICar.javapublic interface ICar{ //由于工厂模式仅关系对象的创建,为说明方便,无需定义方法}//下面定义高、中、低档具体的小汽车//高档汽车:TopCar.javapublic class TopCar implements ICar {}//中档汽车:MidCar.javapublic class MidCar implements ICar {}//低档汽车:LowCar.javapublic class LowCar implements ICar {}//定义抽象工厂AbstractFactory.javapublic abstract class AbstractFactory{ public abstract ICar create();}//定义高档小汽车工厂public class TopFactory extends AbstractFactory{ public ICar create (){ return new TopCar(); }}//定义中档小汽车工厂public class MidFactory extends AbstractFactory{ public ICar create (){ return new MidCar(); }}//定义低档小汽车工厂public class LowFactory extends AbstractFactory{ public ICar create (){ return new LowCar(); }}//测试程序:CarTest.javapublic class CarTest { public static void main(String[] args) { AbstractFactory obj = new TopFactory();//多态创建高档工厂 ICar car = obj.create(); //获得高档工厂中的小汽车对象 }}
如果现在又新增了 一个超高档次的汽车,在工厂模式下,需要做的工作有:
1、新增ICar的实现类SuperCar
2、接着定义SuperFactory,而不需要修改以前已经写好的东西。
工厂模式与简单工厂模式的区别
1、工厂模式将简单工厂模式中具体的工厂类划分为两层:抽象工厂层+具体工厂子类层。
2、工厂模式更易于软件的二次开发,当需求发生变化时,只需要增加、删除相应的类,而不是修改已有的类。一般来说,简单工厂、工厂模式是单产品系的,比如只能制造小汽车;如果既要制造小汽车又要制造公共汽车,就需要用到抽象工厂(多产品系的)。
继续关注Java设计模式—-工厂模式(三)
0 0
- Java设计模式----工厂模式(二)
- Java设计模式(二)----工厂模式
- JAVA设计模式(二)工厂模式与观察者模式
- Java设计模式(二)--工厂设计模式
- java设计模式之二工厂模式
- JAVA--抽象工厂模式--设计模式二
- java设计模式(二)---工厂方法模式
- JAVA设计模式二简单工厂模式
- JAVA设计模式(二)----抽象工厂模式
- java设计模式总结二:工厂模式
- Java设计模式之二(工厂方法模式)
- java设计模式二(简单工厂模式)
- java设计模式学习笔记(二)--工厂方法模式
- java设计模式(二)--抽象工厂模式
- Java设计模式(二) 工厂方法模式
- Java设计模式(二) 工厂方法模式
- 浅谈Java设计模式(二)抽象工厂模式
- JAVA设计模式之抽象工厂模式 (二)
- hdu2019 数列有序
- 在线网页文本编辑器ckeditor的使用
- eclipse中一键生成C头文件.h,以及一键使用NDK交叉编译
- Go web之旅(Request分析)
- Nginx 错误502 upstream sent too big header while reading response header from upstream
- Java设计模式----工厂模式(二)
- vi/vim使用进阶: 程序员的利器 – cscope
- eclipse的自动提示
- 使用Visual Studio 2015调试Android平台Cocos2d-x游戏的C++代码
- tabBarItem的图片不要渲染成系统默认的蓝色
- 多线程五 经典线程同步之事件Event
- 杭电1286找新朋友
- [LeedCode OJ]#35 Search Insert Position
- 浅谈WEB标准