设计模式——抽象工厂模式
2017-03-26 10:36
155 查看
定义
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.使用场景
一个对象族(或一组无任何关系的对象),具有相同约束。UML
示例
抽象产品类public abstract class Product { public void shareMethod(){} public abstract void method(); public abstract void method2(); }
具体产品类 A
public abstract class ConcreteProductA extends Product{ @Override public void method() { } }
具体产品类 A 1
public class ConcreteProductA1 extends ConcreteProductA { @Override public void method2() { } }
抽象工厂类
public abstract class Creator { public abstract Product createProduct1(); public abstract Product createProduct2(); }
具体工厂类 A
public class ConcreteCreatorA extends Creator { @Override public ConcreteProductA1 createProduct1() { return new ConcreteProductA1(); } @Override public ConcreteProductA2 createProduct2() { return new ConcreteProductA2(); } }
场景类
public class Client { public static void main(String[] args){ ConcreteCreatorA concreteProductA = new ConcreteCreatorA(); ConcreteProductA concreteProductA1 = concreteProductA.createProduct1(); ConcreteProductA concreteProductA2 = concreteProductA.createProduct2(); concreteProductA1.method(); concreteProductA1.method2(); concreteProductA2.method(); concreteProductA2.method2(); } }
优点
封装性。只需关心接口。产品族的约束为非公开状态。
局限
产品族扩大困难。违反开闭原则。(如需增加 ProductX3 ,需要修改接口,且与接口有关的代码皆需修改。)END ~
相关文章推荐
- 设计模式C#描述——抽象工厂模式
- .NET设计模式-抽象工厂模式(Abstract Factory)
- 设计模式C#描述——抽象工厂模式
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式——创建型模式之 Abstract Factory抽象工厂模式
- [导入]C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
- 设计模式C#描述——抽象工厂模式
- Java设计模式圣经连载(03)-抽象工厂模式
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 我的设计模式之旅(3)――抽象工厂模式AbstractFactory
- 设计模式实践(抽象工厂模式应用)—通信录的优化过程
- 设计模式之抽象工厂模式
- AspectJ实现设计模式(四)——抽象工厂模式
- .NET设计模式:抽象工厂模式(Abstract Factory)
- [导入]C#面向对象设计模式纵横谈(4):Abstract Factory 抽象工厂模式(创建型模式)
- 设计模式笔记-抽象工厂模式
- .Net设计模式之抽象工厂模式(Abstract Factory)
- .NET设计模式(3):抽象工厂模式(Abstract Factory)(转)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式(3)-抽象工厂模式(Abstract Factory)