本文是读《Android源码设计模式解析与实战》后笔记
抽象工厂的定义
为创建一组相关或者是相互依赖的对象提供一个借口,而不需要指定它们的具体类。
抽象工厂的使用场景
一个对象族有相同的约束时可以使用抽象工厂模式。
下面简单实现,上代码:
public abstract class MacBookComputer {
public abstract ICpu selectCpu();
public abstract IMemory selectMemory();
public abstract IHardDisk selectHardDisk();
}
//Cpu
public interface ICpu {
void model();
}
public class I5Cpu implements ICpu{
@Override
public void model() {
System.out.println("i5处理器");
}
}
//内存
public interface IMemory {
void size();
}
public class Memory_8G implements IMemory{
@Override
public void size() {
System.out.println("8G内存");
}
}
//存储
public interface IHardDisk {
void size();
}
public class Disk_128G implements IHardDisk{
@Override
public void size() {
System.out.println("128G存储");
}
}
//入门款
public class NormalMacBookFactory extends MacBookComputer{
@Override
public ICpu selectCpu() {
return new I5Cpu();
}
@Override
public IMemory selectMemory() {
return new Memory_8G();
}
@Override
public IHardDisk selectHardDisk() {
return new Disk_128G();
}
}
public class Person {
public static void main(String[] args) {
System.out.println("我选择MacBook的入门版");
NormalMacBookFactory factory = new NormalMacBookFactory();
factory.selectCpu().model();
factory.selectMemory().size();
factory.selectHardDisk().size();
}
}
优点
分离接口与实现,切换产品类灵活
缺点
文件数量太多,不容易扩展