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(); } }
相关文章推荐
- 重学java23种设计模式(2)抽象工厂模式
- java23种常用设计模式之抽象工厂模式(Abstract Factory)
- 23种设计模式(3):抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- 23种设计模式学习之东拼西凑-------抽象工厂模式
- 23种经典设计模式的java实现_1_抽象工厂模式
- 23种设计模式之抽象工厂模式(创建型,2 AbstractFactory,c++实现)
- 23种设计模式(3):抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- c++ 23种设计模式之抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- 23种设计模式之抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- Java 23种设计模式之抽象工厂模式
- GoF23种设计模式之创建型模式之抽象工厂模式
- 23种设计模式--抽象工厂模式