您的位置:首页 > 其它

23种设计模式之-抽象工厂模式

2017-08-02 15:21 190 查看

什么是抽象工厂模式?

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

什么时候用到抽象工厂模式?

相比入工厂模式而言,如果说工厂模式支持增加任意产品。

那么抽象工厂模式增加新的产品线很容易,但是无法增加新的产品。

而简单工厂模式和工厂模式的区别可以认为工厂模式是优化了简单工厂模式,遵循了开闭原则

怎么用?

public interface Company {
public Phone buildphone(String params);
public Computer buildcomputer(String params);
}


public class CompanyA implements Company {

@Override
public Phone buildphone(String params) {
if(params=="iphone"){
return new IPhone();
}else{
return new AndroPhone();
}
}

@Override
public Computer buildcomputer(String params) {
if(params=="mac"){
return new MacComputer();
}else{
return new AndroComputer();
}
}

}


public class CompanyB implements Company {

@Override
public Phone buildphone(String params) {
if(params=="iphone"){
return new IPhone1();
}else{
return new AndroPhone1();
}
}

@Override
public Computer buildcomputer(String params) {
if(params=="mac"){
return new MacComputer1();
}else{
return new AndroComputer1();
}
}

}


public abstract class Computer {
public abstract void doUse();
}


public class MacComputer extends Computer {

@Override
public void doUse() {
System.out.println("苹果笔记本");
}

}


public class MacComputer1 extends Computer {

@Override
public void doUse() {
System.out.println("B工厂的macbook");
}

}


public abstract class Phone {
public abstract void doUse();
}


public class IPhone extends Phone {

@Override
public void doUse() {
System.out.println("苹果手机");
}

}


public class IPhone1 extends Phone {

@Override
public void doUse() {
System.out.println("B工厂的iphone");
}

}


public class AndroComputer extends Computer {

@Override
public void doUse() {
System.out.println("安卓笔记本");
}

}


public class AndroComputer1 extends Computer {

@Override
public void doUse() {
System.out.println("B工厂的安卓电脑");
}

}


public class AndroPhone extends Phone {

@Override
public void doUse() {
System.out.println("安卓手机");
}

}


public class AndroPhone1 extends Phone {

@Override
public void doUse() {
System.err.println("b工厂的安卓手机");
}

}


public class Test {
public static void main(String[] args) {
Company company=new CompanyA();
Computer computer=company.buildcomputer("mac");
computer.doUse();
Phone phone=company.buildphone("iphone");
phone.doUse();

company=new CompanyB();
computer=company.buildcomputer("mac");
computer.doUse();
phone=company.buildphone("iphone");
phone.doUse();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式