设计模式学习----抽象工厂模式
来源:互联网 发布:淘宝权的瞎子比赛视频 编辑:程序博客网 时间:2024/05/21 22:33
类型:创建模式
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
实现代码
新建抽象工厂接口:
package car_factory_interface;
import car_interface.Icar_interface;
public interface Icar_factory {
public Icar_interface create_threeW_car();
public Icar_interface create_audi_car();
}
新建抽象工厂接口的高级车adv工厂实现类:
package car_factory_imple;
import car_factory_interface.Icar_factory;
import car_imple.car_3w_imple_adv;
import car_imple.car_audi_imple_adv;
import car_interface.Icar_interface;
public class car_factory_adv implements Icar_factory {
public Icar_interface create_audi_car() {
car_audi_imple_adv car_audi_imple_adv = new car_audi_imple_adv();
car_audi_imple_adv.setName("奥迪A6");
car_audi_imple_adv.setSpeed(300);
return car_audi_imple_adv;
}
public Icar_interface create_threeW_car() {
car_3w_imple_adv car_3w_imple_adv_ref = new car_3w_imple_adv();
car_3w_imple_adv_ref.setName("大众A6");
car_3w_imple_adv_ref.setSpeed(300);
return car_3w_imple_adv_ref;
}
}
新建抽象工厂接口的普通车low工厂实现类:
package car_factory_imple;
import car_factory_interface.Icar_factory;
import car_imple.car_3w_imple_low;
import car_imple.car_audi_imple_low;
import car_interface.Icar_interface;
public class car_factory_low implements Icar_factory {
public Icar_interface create_audi_car() {
car_audi_imple_low car_audi_imple_low_ref = new car_audi_imple_low();
car_audi_imple_low_ref.setName("奥迪A6");
car_audi_imple_low_ref.setSpeed(300);
return car_audi_imple_low_ref;
}
public Icar_interface create_threeW_car() {
car_3w_imple_low car_3w_imple_low_ref = new car_3w_imple_low();
car_3w_imple_low_ref.setName("大众A6");
car_3w_imple_low_ref.setSpeed(300);
return car_3w_imple_low_ref;
}
}
上面已经有抽象工厂和具体工厂的实现类了。
新建汽车接口:
package car_interface;
public interface Icar_interface {
public void start();
public void stop();
}
新建汽车父类:
package car_imple;
import car_interface.Icar_interface;
public class base_car_imple implements Icar_interface {
private int speed;
private String name;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void start() {
// TODO Auto-generated method stub
}
public void stop() {
// TODO Auto-generated method stub
}
}
新建大众高级车:
package car_imple;
import car_interface.Icar_interface;
public class car_3w_imple_adv extends base_car_imple {
public void start() {
System.out.println("富华版:" + this.getName() + " 车以专利技术起动了 最高速度为:"
+ this.getSpeed());
}
public void stop() {
System.out.println("富华版:" + this.getName() + " 车以专利技术停车了");
}
}
新建大众普通车:
package car_imple;
import car_interface.Icar_interface;
public class car_3w_imple_low extends base_car_imple {
public void start() {
System.out.println("普通版:" + this.getName() + " 车以专利技术起动了 最高速度为:"
+ this.getSpeed());
}
public void stop() {
System.out.println("普通版:" + this.getName() + " 车以专利技术停车了");
}
}
新建大众普通车:
package car_imple;
import car_interface.Icar_interface;
public class car_audi_imple_adv extends base_car_imple {
public void start() {
System.out.println("富华版:" + this.getName() + " 车以专利技术起动了 最高速度为:"
+ this.getSpeed());
}
public void stop() {
System.out.println("富华版:" + this.getName() + " 车以专利技术停车了");
}
}
新建奥迪普通车:
package car_imple;
import car_interface.Icar_interface;
public class car_audi_imple_low extends base_car_imple {
public void start() {
System.out.println("普通版:" + this.getName() + " 车以专利技术起动了 最高速度为:"
+ this.getSpeed());
}
public void stop() {
System.out.println("普通版:" + this.getName() + " 车以专利技术停车了");
}
}
新建客户端运行类:
package run_main;
import car_factory_imple.car_factory_adv;
import car_factory_interface.Icar_factory;
import car_interface.Icar_interface;
public class run_main {
public static void main(String[] args) {
Icar_factory Icar_factory_ref = new car_factory_adv();
Icar_interface Icar_interface_ref = Icar_factory_ref
.create_threeW_car();
Icar_interface_ref.start();
Icar_interface_ref.stop();
}
}
工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
区别:
工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
- 设计模式学习--抽象工厂
- 设计模式学习----抽象工厂模式
- 设计模式之抽象工厂模式学习
- 设计模式学习-----抽象工厂模式
- 设计模式学习笔记-抽象工厂模式
- GoF设计模式学习-抽象工厂模式
- 设计模式学习—抽象工厂模式
- 学习设计模式之“抽象工厂模式”
- 设计模式学习笔记--抽象工厂模式
- 设计模式学习--抽象工厂模式
- 设计模式学习笔记-抽象工厂模式
- 设计模式实例学习-抽象工厂模式
- 设计模式深入学习-抽象工厂模式
- 设计模式学习--抽象工厂模式
- 【设计模式学习】抽象工厂模式
- 【设计模式学习】抽象工厂模式
- 设计模式学习:抽象工厂模式
- 设计模式学习---第九节:抽象工厂模式
- MySQL:日期函数、时间函数总结(MySQL 5.X)
- 任务≠结果:和尚撞钟与书店买书
- N73新手入门常见问题解答,想成为高手的必看!
- 并发内存分配问题以及TBB的解决方案
- [转]在水晶报表中实现任意选择指定字段显示
- 设计模式学习----抽象工厂模式
- 【摘】Power Builder 中动态SQL语句的写法
- 删除svn文件
- head first读书笔记2
- 为什么C语言不检查数组的下标?
- 「ことだ」和「ものだ」的区别
- 学习
- java 文件读写_FileInputStream_File
- 【摘】存储过程比较动态SQL的优点在哪里