抽象工厂模式
2015-07-14 20:37
260 查看
//现在有两类车,跑车和商务车,那么跑车又有宝马跑车和奔驰跑车
商务车又有宝马商务车和奔驰商务车
现在又有一个生产车的大工厂,大工厂的下面又有跑车工厂和上午
********************
车的接口 ***********************
package com.lovo.AbstrctFactory2;
public interface ICar {
public void car(); //车的方法
}
********************
跑车的抽象类
package com.lovo.AbstrctFactory2;
public abstract class RunCar implements ICar{
@Override
public abstract void car();
}
********************
商务车的抽象类
package com.lovo.AbstrctFactory2;
public abstract class WorkCar implements ICar {
@Override
public abstract void car();
}
********************
宝马跑车的方法
package com.lovo.AbstrctFactory2;
public class BaoMaRun extends RunCar{
@Override
public void car() {
System.out.println("宝马跑车....");
}
}
******************** 宝马商务车的方法
package com.lovo.AbstrctFactory2;
public class BaoMaWork extends WorkCar {
@Override
public void car() {
System.out.println("宝马商务车....");
}
}
******************** 奔驰跑车的方法
package com.lovo.AbstrctFactory2;
public class BenChiRun extends RunCar {
@Override
public void car() {
System.out.println("奔驰跑车....");
}
}
******************** 奔驰商务车的方法
package com.lovo.AbstrctFactory2;
public class BenChiWork extends WorkCar{
@Override
public void car() {
System.out.println("奔驰商务车....");
}
}
******************** 工厂的接口 ***********************
package com.lovo.AbstrctFactory2;
public interface AbstractFactory {
public ICar getrun(); //获得跑车
public ICar getwork(); //获得商务车
}
******************** 宝马工厂
package com.lovo.AbstrctFactory2;
public class BaoMaFactory implements AbstractFactory{
@Override
public ICar getrun() {
return new BaoMaRun(); //获得宝马跑车对象
}
@Override
public ICar getwork() {
return new BaoMaWork(); //获得宝马商务车对象
}
}
********************
奔驰工厂
package com.lovo.AbstrctFactory2;
public class BenChiFactory implements AbstractFactory {
@Override
public ICar getrun() {
return new BenChiRun(); //获得奔驰跑车对象
}
@Override
public ICar getwork() {
return new BenChiWork(); //获得奔驰商务车对象
}
}
******************** 测试 ***********************
package com.lovo.AbstrctFactory2;
public class TestDemo {
public static void main(String[] args) {
AbstractFactory abf = new BaoMaFactory(); //获得宝马工厂
ICar car = abf.getwork(); //获得宝马商务车的对象方法
car.car(); //调用car方法,打印内容
}
}
商务车又有宝马商务车和奔驰商务车
现在又有一个生产车的大工厂,大工厂的下面又有跑车工厂和上午
********************
车的接口 ***********************
package com.lovo.AbstrctFactory2;
public interface ICar {
public void car(); //车的方法
}
********************
跑车的抽象类
package com.lovo.AbstrctFactory2;
public abstract class RunCar implements ICar{
@Override
public abstract void car();
}
********************
商务车的抽象类
package com.lovo.AbstrctFactory2;
public abstract class WorkCar implements ICar {
@Override
public abstract void car();
}
********************
宝马跑车的方法
package com.lovo.AbstrctFactory2;
public class BaoMaRun extends RunCar{
@Override
public void car() {
System.out.println("宝马跑车....");
}
}
******************** 宝马商务车的方法
package com.lovo.AbstrctFactory2;
public class BaoMaWork extends WorkCar {
@Override
public void car() {
System.out.println("宝马商务车....");
}
}
******************** 奔驰跑车的方法
package com.lovo.AbstrctFactory2;
public class BenChiRun extends RunCar {
@Override
public void car() {
System.out.println("奔驰跑车....");
}
}
******************** 奔驰商务车的方法
package com.lovo.AbstrctFactory2;
public class BenChiWork extends WorkCar{
@Override
public void car() {
System.out.println("奔驰商务车....");
}
}
******************** 工厂的接口 ***********************
package com.lovo.AbstrctFactory2;
public interface AbstractFactory {
public ICar getrun(); //获得跑车
public ICar getwork(); //获得商务车
}
******************** 宝马工厂
package com.lovo.AbstrctFactory2;
public class BaoMaFactory implements AbstractFactory{
@Override
public ICar getrun() {
return new BaoMaRun(); //获得宝马跑车对象
}
@Override
public ICar getwork() {
return new BaoMaWork(); //获得宝马商务车对象
}
}
********************
奔驰工厂
package com.lovo.AbstrctFactory2;
public class BenChiFactory implements AbstractFactory {
@Override
public ICar getrun() {
return new BenChiRun(); //获得奔驰跑车对象
}
@Override
public ICar getwork() {
return new BenChiWork(); //获得奔驰商务车对象
}
}
******************** 测试 ***********************
package com.lovo.AbstrctFactory2;
public class TestDemo {
public static void main(String[] args) {
AbstractFactory abf = new BaoMaFactory(); //获得宝马工厂
ICar car = abf.getwork(); //获得宝马商务车的对象方法
car.car(); //调用car方法,打印内容
}
}
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- [转]C++之运算符重载(2)
- 字符串的全排列
- 【C++】深度探索C++对象模型读书笔记--构造函数语义学(The Semantics of constructors)(一)
- DB2 V10的nosql DB 介绍 和命令接口 未完待续---
- 南阳理工102 次方求模
- scp
- Linux的shell终端常用快捷键大全
- c++顺序容器之string
- Scrum三头猪
- 织梦dedecms源码安装方法
- CSS实现垂直居中
- ListView里面的自定义控件
- 最短路之Dijkstra算法
- 技术心得五——心中的马
- 技术心得五——心中的马
- POJ 2663 Tri Tiling
- AndroidStudio学习(一)--区分版本
- hdu 3081 二分+最大流
- C/C++校招笔试面试经典题目总结四