• 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的实现方法");
     }
     
     }
  • 相关阅读:
    git merge远程合并
    开发中必知必会的常用Linux命令
    mysql双机双向热备
    入门级实操教程!从概念到部署,全方位了解K8S Ingress!
    linux常用命令,你应该了解的Linux知识
    MFC的静态库.lib、动态库.dll(包含引入库.lib)以及Unicode库示例
    Java 表达式之谜:为什么 index 增加了两次?
    Vavr Option:Java Optional 的另一个选项
    一文详解 Java 的八大基本类型!
    如何找到真正的 public 方法
  • 原文地址:https://www.cnblogs.com/flyingsir/p/3998762.html
Copyright © 2020-2023  润新知