您的位置:首页 > 其它

抽象工厂模式

2016-09-04 20:34 225 查看
定义

起源与以前对不同操作系统的图形化解决方案,如不同操作系统的按钮和文本框控件其实现不同,展示效果也不一样,对于每一个操作系统,其本身就构成一个产品类,而按钮与文本框控件也构成一个类,两种产品类两种变化,各自有自己的特性。

魏传建一组相关或者是互相依赖的对象提供统一接口,而不需要指定它们的具体类。

使用场景

Android、iOS、Windows Phone下都有短信软件和拨号软件,两者都属于Software范畴,但是,他们所在的操作系统平台不一样,即便是同一家公司出品的软件,其代码的实现逻辑也是不同的。

UML图:



代码

CarFactory.java

public abstract class CarFactory {

public abstract ITire createTire();

public abstract IEngine createEngine();

public abstract IBrake createBrake();
}


ITire.java

public interface ITire {

void tire();
}


NormalTire

public class NormalTire implements ITire {

@Override
public void tire(){
System.out.println("普通轮胎");
}
}


IEngine.java

public interface IEngine {

void engine();
}


ImportEngine.java

public class ImportEngine implements IEngine {
@Override
public void engine(){
System.out.println("进口发动机");
}
}


DomesticEngine.java

public class DomesticEngine implements IEngine {
@Override
public void engine(){
System.out.println("国产发动机");
}
}


IBrake.java

public interface IBrake {
void brake();
}


SeniorBrake.java

public class SeniorBrake implements IBrake {
@Override
public void brake(){
System.out.println("高级制动");
}
}


Q3Factory.java

public class Q3Factory extends CarFactory {
@Override
public ITire createTire(){
return new NormalTire();
}

@Override
public IEngine createEngine(){
return new DomesticEngine();
}

@Override
public IBrake createBrake(){
return new NormalBrake();
}
}


Q7Factory.java

public class Q7Factory extends CarFactory{
@Override
public ITire createTire(){
return new SUVTire();
}

@Override
public IEngine createEngine(){
return new ImportEngine();
}

@Override
public IBrake createBrake(){
return new SeniorBrake();
}
}


SUVTire.java

public class SUVTire implements ITire {
@Override
public void tire(){
System.out.println("越野轮胎");
}
}


Client.java

public class Client {

public static void main(String[] args){
CarFactory factoryQ3=new Q3Factory();
factoryQ3.createTire().tire();
factoryQ3.createEngine().engine();
factoryQ3.createBrake().brake();

System.out.println("-----------------------");

CarFactory factoryQ7=new Q7Factory();
factoryQ7.createTire().tire();
factoryQ7.createEngine().engine();
factoryQ7.createBrake().brake();
}
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: