• 设计模式——工厂方法


    工厂角色:

    package designpattern.creation.factorymethod;
    
    public class FactoryA {
    
        public IProduct getProduct() {
            return new ProductA();
        }
        
    }
    
    
    package designpattern.creation.factorymethod;
    
    public class FactoryB {
    
        public IProduct getProduct() {
            return new ProductB();
        }
        
    }

    产品角色:

    package designpattern.creation.factorymethod;
    
    public interface IProduct {
    
        void use();
    }
    
    package designpattern.creation.factorymethod;
    
    public class ProductA implements IProduct {
    
        public void use() {
            // TODO Auto-generated method stub
            System.out.println("ProductA.use()");
        }
    }
    
    package designpattern.creation.factorymethod;
    
    public class ProductB implements IProduct {
    
        public void use() {
            // TODO Auto-generated method stub
            System.out.println("ProductB.use()");
        }
    
    }

    客户端:

    package designpattern.creation.factorymethod;
    /*
     * 
     * 工厂方法用于处理更加复杂的情况。
     * —— 当产品出现不用种类的时候。
     * 为什么 称这种模式为工厂方法? ?
     * 
     * 要素:
     * 
     * 1 只有多个工厂
     * 2 工厂有一个方法 ,每个工厂只负责生产一个产品
     * 3 客户端通过调用不同工厂的相同方法获取对应的不同的产品
     * 
     * 缺点:
     * 每增加一个产品则需要增加2个类: 一个工厂、一个具体产品—— 这样导致类的膨胀
     * 
     * 
     * 使用场景?
     * 
     */
    public class Client {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            IProduct product = new FactoryA().getProduct();
            product.use();
    
            IProduct product2 = new FactoryB().getProduct();
            product2.use();
        }
    
    }
  • 相关阅读:
    Java面试题(转)
    哪种方式更适合在React中获取数据?
    vue学习之深入响应式原理
    还不会用FindBugs?你的代码质量很可能令人堪忧
    几道大数据面试题(转)
    【Medium翻译】Java抽象类有什么用?
    深入理解Kafka必知必会(上)
    (八十六)c#Winform自定义控件-表格优化(转载)
    IDEA 配置及常用快捷键
    Markdown 复杂公式&常用符号
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/3916821.html
Copyright © 2020-2023  润新知