设计模式——抽象工厂模式AbstractFactory
来源:互联网 发布:上海淘宝摄影基地 编辑:程序博客网 时间:2024/06/07 15:50
抽象工厂模式 AbstractFactory:是对工厂模式的一个拓展,实际上就是进行了一次封装,相比于工厂模式,抽象工厂模式层次更高。抽象工厂模式返回的是一组类的工厂,而这个工厂会返回多个子类中的一个,可以简单的理解为:现在有多个小的工厂,用一个大的工厂AbstractFactory 进行封装,然后返回其中的一个工厂factory ,工厂factory 再根据实际参数返回一个子类的实例。
应用场景:屏蔽了这些具体类的创建方法,实现了客户端与具体类的解耦。因为具体类是屏蔽的,所以可以在不同的工厂之间进行切换。
简单的例子:
public abstract class Car {public abstract Parts getWheels();public abstract Parts getMirros();public abstract Parts getEngine();;public abstract Parts getBody();}
public class Parts {public String spe;public Parts(String spe){this.spe = spe;}public String getSpe(){return spe;}}
三个不同的子类:
public class BenQ extends Car {@Overridepublic Parts getWheels() {// TODO Auto-generated method stubreturn new Parts("BenQ Wheels");}@Overridepublic Parts getMirros() {// TODO Auto-generated method stubreturn new Parts("BenQ Mirros");}@Overridepublic Parts getEngine() {// TODO Auto-generated method stubreturn new Parts("BenQ Engine");}@Overridepublic Parts getBody() {// TODO Auto-generated method stubreturn new Parts("BenQ Body");}}
public class BMW extends Car {@Overridepublic Parts getWheels() {// TODO Auto-generated method stubreturn new Parts("BMW Wheels");}@Overridepublic Parts getMirros() {// TODO Auto-generated method stubreturn new Parts("BMW Mirros");}@Overridepublic Parts getEngine() {// TODO Auto-generated method stubreturn new Parts("BMW ");}@Overridepublic Parts getBody() {// TODO Auto-generated method stubreturn new Parts("BMW Body");}}
public class GeneralCar extends Car {@Overridepublic Parts getWheels() {// TODO Auto-generated method stubreturn new Parts("GeneralCar Wheels");}@Overridepublic Parts getMirros() {// TODO Auto-generated method stubreturn new Parts("GeneralCar Mirros");}@Overridepublic Parts getEngine() {// TODO Auto-generated method stubreturn new Parts("GeneralCar Engine");}@Overridepublic Parts getBody() {// TODO Auto-generated method stubreturn new Parts("GeneralCar Body");}}
简单的Demo实现:
public class CarType {private static Car car;public static void main(String args[]){CarType type = new CarType();car = type.getCar("BenQ");}/** * 根据参数 type 决定要实例化的子类是哪个 * * @param type * @return */public Car getCar(String type){if(type.equals("BenQ")){car = new BenQ();}elseif(type.equals("BMW")){car = new BMW();}elseif(type.equals("GeneralCar"))car = new GeneralCar();return car;}}
阅读全文
0 0
- 设计模式 — 抽象工厂模式 (AbstractFactory)
- 设计模式——抽象工厂模式AbstractFactory
- 设计模式--抽象工厂(AbstractFactory)
- 设计模式 - AbstractFactory抽象工厂
- 设计模式(1)——抽象工厂 AbstractFactory
- [设计模式]AbstractFactory抽象工厂模式
- 设计模式 -- 抽象工厂模式 AbstractFactory
- 设计模式之抽象工厂模式(AbstractFactory)
- C++设计模式-AbstractFactory抽象工厂模式
- C++设计模式-AbstractFactory抽象工厂模式
- 【设计模式】-抽象工厂模式-AbstractFactory
- C++设计模式-AbstractFactory抽象工厂模式
- 设计模式-抽象工厂模式-abstractfactory-python
- C++设计模式-AbstractFactory抽象工厂模式
- AbstractFactory抽象工厂模式
- AbstractFactory抽象工厂模式
- AbstractFactory抽象工厂模式
- 抽象工厂模式 AbstractFactory
- 提交svn 提交报错
- Rails UVA
- 机器学习
- svn: E155004: There are unfinished work
- 想#13
- 设计模式——抽象工厂模式AbstractFactory
- [聊天机器人]:开源ChatterBot工作原理
- Windows命令
- java集合------Map集合
- 【南阳OJ119】士兵杀敌(三)(线段树)
- 找单词
- 唱歌比赛
- 几个重要的java数据库访问类和接口
- golang http 编程-2(模版渲染)