首页 > 代码库 > Java 实现抽象工厂模式
Java 实现抽象工厂模式
抽象工厂模式
里面有几个概念:抽象工厂、实体工厂、抽象产品、实体产品
抽象工厂:定义创建产品的抽象方法
实体工厂:具体的创建哪种产品
抽象产品:一个接口或基类
实体产品:实现具体功能,或派生
//抽象产品1 public interface IProduct1 { public void show(); }
//抽象产品2 public interface IProduct2 { public void show(); }
//实体产品1 public class Product1 implements IProduct1 { public void show() { System.out.println("创建了1型产品"); } }
//实体产品2 public class Product2 implements IProduct2 { public void show() { System.out.println("创建了2型产品"); } }
/* * 1A 1B属于Product1 同一产品等级结构中 * 2A 2B属于Product2 */ public class GradeProduct1A extends Product1 { @Override public void show() { super.show(); System.out.println("这是产品1下的:产品A"); } }
public class GradeProduct1B extends Product1 { @Override public void show() { super.show(); System.out.println("这是产品1下的:产品B"); } }
public class GradeProduct2A extends Product2 { @Override public void show() { super.show(); System.out.println("这是产品2下的:产品A"); } }
public class GradeProduct2B extends Product2 { @Override public void show() { super.show(); System.out.println("这是产品2下的:产品B"); } }
//抽象工厂 创建不同的抽象产品 public interface IFactory { public IProduct1 createProduct1A();//1类产品 型号A public IProduct1 createProduct1B();//1类产品 型号B public IProduct2 createProduct2A();//2类产品 型号A public IProduct2 createProduct2B();//2类产品 型号B }
//实体工厂 创建实体产品,返回类型为抽象产品 public class Factory implements IFactory { public IProduct1 createProduct1A() { return new GradeProduct1A(); } public IProduct1 createProduct1B() { return new GradeProduct1B(); } public IProduct2 createProduct2A() { return new GradeProduct2A(); } public IProduct2 createProduct2B() { return new GradeProduct2B(); } }
/* * 抽象工厂模式:用来创建一组相关或者相互依赖的对象 * * 流程:抽象工厂,实体工厂 生产产品 * 抽象产品,实体产品 实现产品功能 * 缺点:当需要增加一个产品(由抽象和实体构成),工厂都需要更改 */ public class Test4Abstract { public static void main(String[] args) { IFactory factory = new Factory(); IProduct1 product1a = factory.createProduct1A(); product1a.show(); IProduct1 product1b = factory.createProduct1B(); product1b.show(); IProduct2 product2a = factory.createProduct2A(); product2a.show(); IProduct2 product2b = factory.createProduct2B(); product2b.show(); } }
Java 实现抽象工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。