标签:java设计模式 设计模式 抽象工厂模式 java 软件开发
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
1.一个系统要独立于它的产品的创建、组合和表示时。
2.一个系统要由多个产品系列中的一个来配置时。
3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。
4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。
1.AbstractFactory
声明一个创建抽象产品对象的操作接口。
2.ConcreteFactory
实现创建具体产品对象的操作。
3.AbstractProduct
为一类产品对象声明一个接口。
4.ConcreteProduct
定义一个将被相应的具体工厂创建的产品对象。
实现AbstractProduct接口。
5.Client
仅使用由AbstractFactory和AbstractProduct类声明的接口
/** * 发动机接口 * @author Linhai Gu * */ public interface Motor { public void motor(); }
public class AoDiMotor implements Motor{ private String name=null; public AoDiMotor(String name) { this.name=name; } @Override public void motor() { System.out.println(name+"的发动机"); } }
public class BaoMaMotor implements Motor{ private String name=null; public BaoMaMotor(String name) { this.name=name; } @Override public void motor() { System.out.println(name+"的发动机"); } }
/** * 轮胎接口 * @author Linhai Gu * */ public interface Tyre { public void tyre(); }
public class AoDiTyre implements Tyre{ private String name=null; public AoDiTyre(String name) { this.name=name; } @Override public void tyre() { System.out.println(name+"的轮胎"); } }
public class BaoMaTyre implements Tyre{ private String name=null; public BaoMaTyre(String name) { this.name=name; } @Override public void tyre() { System.out.println(name+"的轮胎"); } }
/** * 方向盘接口 * @author Linhai Gu * */ public interface SteeringWhell { public void steeringWhell(); }
public class AoDiSteeringWhell implements SteeringWhell{ private String name=null; public AoDiSteeringWhell(String name) { this.name=name; } @Override public void steeringWhell() { System.out.println(name+"的方向盘"); } }
public class BaoMaSteeringWhell implements SteeringWhell{ private String name=null; public BaoMaSteeringWhell(String name) { this.name=name; } @Override public void steeringWhell() { System.out.println(name+"的方向盘"); } }
public interface AbstractFactory { /* * 创建Motor对象 */ public Motor creatMotor(); /* * 创建Tyre对象 */ public Tyre creatTyre(); /* * 创建SteeringWhell对象 */ public SteeringWhell creatSteeringWhell(); }
public class AoDiFactory implements AbstractFactory{ @Override public Motor creatMotor() { // TODO Auto-generated method stub return new AoDiMotor("奥迪"); } @Override public Tyre creatTyre() { // TODO Auto-generated method stub return new AoDiTyre("奥迪"); } @Override public SteeringWhell creatSteeringWhell() { // TODO Auto-generated method stub return new AoDiSteeringWhell("奥迪"); } }
public class BaoMaFactory implements AbstractFactory{ @Override public Motor creatMotor() { // TODO Auto-generated method stub return new BaoMaMotor("宝马"); } @Override public Tyre creatTyre() { // TODO Auto-generated method stub return new BaoMaTyre("宝马"); } @Override public SteeringWhell creatSteeringWhell() { // TODO Auto-generated method stub return new BaoMaSteeringWhell("宝马"); } }
</pre><pre name="code" class="java">public class CarEngineer { //车需要的发动机 private Motor motor=null; //车需要的轮胎 private Tyre tyre=null; //车需要的方向盘 private SteeringWhell steeringWhell=null; public void makeCar(AbstractFactory af){ this.motor=af.creatMotor(); this.tyre=af.creatTyre(); this.steeringWhell=af.creatSteeringWhell(); this.motor.motor(); this.tyre.tyre(); this.steeringWhell.steeringWhell(); } }
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //品牌厂家 CarEngineer carEngineer=new CarEngineer(); //客户1选的牌子 AbstractFactory aoDi=new AoDiFactory(); //客户2选的牌子 AbstractFactory baoMa=new BaoMaFactory(); //厂家推出 System.out.println("客户1:"); carEngineer.makeCar(aoDi); System.out.println("客户2:"); carEngineer.makeCar(baoMa); } }
标签:java设计模式 设计模式 抽象工厂模式 java 软件开发
原文地址:http://blog.csdn.net/hai_qing_xu_kong/article/details/42084395