AbstractFactory

 

 

 

 

 

复制代码
AbstractFactory

Imagemap
 hideAbstractFactory
hideTest
/**
 * 抽象工厂模式
 * @author 
 *
 */
 public class Test {
 public static void main(String[] args) {
 // 定义出两个工厂
 AbstractCreator creator1 = new Creator1();
 AbstractCreator creator2 = new Creator2();
 
 // 产生A1对象
 AbstractProductA a1 = creator1.createProductA();
 // 产生2对象
 AbstractProductA a2 = creator2.createProductA();
 
 // 产生B1对象
 AbstractProductB b1 = creator1.createProductB();
 // 产生B2对象
 AbstractProductB b2 = creator2.createProductB();
 }
 }

hideAbstractCreator
/**
 * 抽象工厂
 * 
 * @author 
 * 
 */
 public abstract class AbstractCreator {
 /**
 * 创建A产品族
 * 
 * @return
 */
 public abstract AbstractProductA createProductA();
 
 /**
 * 创建B产品族
 * 
 * @return
 */
 public abstract AbstractProductB createProductB();
 }

hideCreator1
/**
 * 产品等级1的实现类
 * 
 * @author lyq
 * 
 */
 public class Creator1 extends AbstractCreator {
 
 /**
 * 只产生产品等级为1的A产品
 */
 public AbstractProductA createProductA() {
 return new ProductA1();
 }
 
 /**
 * 只产生产品等级为1的B产品
 */
 public AbstractProductB createProductB() {
 return new ProductB1();
 }
 
 }

hideAbstractProductA
/**
 * 抽象产品类
 *
 */
 public abstract class AbstractProductA {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductA1
/**
 * 产品A1的实现类
 * 
 */
 public class ProductA1 extends AbstractProductA {
 
 @Override
 public void doSomething() {
 System.out.println("产品A1的实现方法");
 
 }
 }

hideAbstractProductB
/**
 * 抽象产品类
 * 
 */
 public abstract class AbstractProductB {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductB1
/**
 * 产品B1的实现类
 * @author lyq
 *
 */
 public class ProductB1 extends AbstractProductB{
 
 @Override
 public void doSomething() {
 System.out.println("产品B1的实现方法");
 }
 
 }

hideCreator2
/**
 * 产品等级2的实现类
 * 
 * @author 
 * 
 */
 public class Creator2 extends AbstractCreator {
 
 /**
 * 只产生产品等级为2的A产品
 */
 public AbstractProductA createProductA() {
 return new ProductA2();
 }
 
 /**
 * 只产生产品等级为2的B产品
 */
 public AbstractProductB createProductB() {
 return new ProductB2();
 }
 
 }

hideAbstractProductA
/**
 * 抽象产品类
 *
 */
 public abstract class AbstractProductA {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductA2
/**
 * 产品A2的实现类
 * @author 
 *
 */
 public class ProductA2 extends AbstractProductA {
 
 @Override
 public void doSomething() {
 System.out.println("产品A2的实现方法");
 }
 
 }

hideAbstractProductB
/**
 * 抽象产品类
 * 
 */
 public abstract class AbstractProductB {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductB2
/**
 * 产品B2的实现类
 * @author 
 *
 */
 public class ProductB2 extends AbstractProductB {
 
 @Override
 public void doSomething() {
 System.out.println("产品B2的实现方法");
 }
 
 }
复制代码

 

复制代码
AbstractFactory
    Test
        AbstractCreator
            Creator1
                AbstractProductA
                    ProductA1
                AbstractProductB
                    ProductB1
            Creator2
                AbstractProductA
                    ProductA2
                AbstractProductB
                    ProductB2
复制代码

 

 

复制代码
AbstractFactory

Imagemap
 hideAbstractFactory
hideTest
/**
 * 抽象工厂模式
 * @author 
 *
 */
 public class Test {
 public static void main(String[] args) {
 // 定义出两个工厂
 AbstractCreator creator1 = new Creator1();
 AbstractCreator creator2 = new Creator2();
 
 // 产生A1对象
 AbstractProductA a1 = creator1.createProductA();
 // 产生2对象
 AbstractProductA a2 = creator2.createProductA();
 
 // 产生B1对象
 AbstractProductB b1 = creator1.createProductB();
 // 产生B2对象
 AbstractProductB b2 = creator2.createProductB();
 }
 }

hideAbstractCreator
/**
 * 抽象工厂
 * 
 * @author 
 * 
 */
 public abstract class AbstractCreator {
 /**
 * 创建A产品族
 * 
 * @return
 */
 public abstract AbstractProductA createProductA();
 
 /**
 * 创建B产品族
 * 
 * @return
 */
 public abstract AbstractProductB createProductB();
 }

hideCreator1
/**
 * 产品等级1的实现类
 * 
 * @author lyq
 * 
 */
 public class Creator1 extends AbstractCreator {
 
 /**
 * 只产生产品等级为1的A产品
 */
 public AbstractProductA createProductA() {
 return new ProductA1();
 }
 
 /**
 * 只产生产品等级为1的B产品
 */
 public AbstractProductB createProductB() {
 return new ProductB1();
 }
 
 }

hideAbstractProductA
/**
 * 抽象产品类
 *
 */
 public abstract class AbstractProductA {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductA1
/**
 * 产品A1的实现类
 * 
 */
 public class ProductA1 extends AbstractProductA {
 
 @Override
 public void doSomething() {
 System.out.println("产品A1的实现方法");
 
 }
 }

hideAbstractProductB
/**
 * 抽象产品类
 * 
 */
 public abstract class AbstractProductB {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductB1
/**
 * 产品B1的实现类
 * @author lyq
 *
 */
 public class ProductB1 extends AbstractProductB{
 
 @Override
 public void doSomething() {
 System.out.println("产品B1的实现方法");
 }
 
 }

hideCreator2
/**
 * 产品等级2的实现类
 * 
 * @author 
 * 
 */
 public class Creator2 extends AbstractCreator {
 
 /**
 * 只产生产品等级为2的A产品
 */
 public AbstractProductA createProductA() {
 return new ProductA2();
 }
 
 /**
 * 只产生产品等级为2的B产品
 */
 public AbstractProductB createProductB() {
 return new ProductB2();
 }
 
 }

hideAbstractProductA
/**
 * 抽象产品类
 *
 */
 public abstract class AbstractProductA {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductA2
/**
 * 产品A2的实现类
 * @author 
 *
 */
 public class ProductA2 extends AbstractProductA {
 
 @Override
 public void doSomething() {
 System.out.println("产品A2的实现方法");
 }
 
 }

hideAbstractProductB
/**
 * 抽象产品类
 * 
 */
 public abstract class AbstractProductB {
 /**
 * 每个产品共有的方法
 */
 public void shareMethod() {
 
 }
 
 /**
 * 每个产品相同的方法,不同的实现
 */
 public abstract void doSomething();
 }

leafProductB2
/**
 * 产品B2的实现类
 * @author 
 *
 */
 public class ProductB2 extends AbstractProductB {
 
 @Override
 public void doSomething() {
 System.out.println("产品B2的实现方法");
 }
 
 }
复制代码

 

posted @   aiplus  阅读(171)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
悬浮按钮示例
点击右上角即可分享
微信分享提示