• 工厂方法模式


    工厂方法模式属于创建型模式,与简单工厂相比 它多了工厂的接口和生产固定产品的工厂类,即每种产品都有固定的工厂。

    一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品,同时增加新的工厂。

    角色:

    产品接口:定义产品统一的行为

    具体产品:具体的产品类型

    工厂接口:定义工厂统一的行为

    具体工厂:具体的工厂类型

    示例:

    public interface IProduct {
        void myfunction();
    }

    ---

    class Product1 implements IProduct{
        public void myfunction(){
            System.out.println("function1");
        }
    }

    ---

    public interface IFactory{
        IProduct product();
    }

    ---

    public class Factory1 implements IFactory{
        public IProduct product(){
            return new Product1();
        }
    }

    ---

    public class FactoryTest{
        public static void main(String[] args){
            IFactory factory1 = new Factory1();
            IProduct product = factory1.product();
            product.myfunction();
    
            IFactory factory2 = new Factory2();
            product = factory2.product();
            product.myfunction();
        }
    }

    输出:

    function1
    function2

    可以看到,只需创建不同的工厂就可以生产不同的产品,这也是工厂方法模式对扩展开放的表现,增加新产品不再需要修改任何已有的类,而简单工厂却需要修改工厂类。符合开闭原则,对扩展开放,对修改关闭。

    end

  • 相关阅读:
    CF 120F Spider 树的直径 简单题
    POJ 1155 TELE 背包型树形DP 经典题
    CF 219D Choosing Capital for Treeland 树形DP 好题
    POJ 3162 Walking Race 树形DP+线段树
    HDU 2196 Computer 树形DP 经典题
    __str__()、__repr__()和__format__()
    item系列方法
    getattribute
    isinstance和issubclass
    继承方式完成包装
  • 原文地址:https://www.cnblogs.com/luangeng/p/6557088.html
Copyright © 2020-2023  润新知