• java工厂方法模式


      周末在家也没事,之前对工厂常用模式了解有一些不够深入,刚好整理一下设计模式相关。共同理解和学习一下。

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

    2. 模式中包含的角色及其职责
      1.   解释

        1.抽象工厂(Creator)角色:工厂方法模式的核心,任何工厂类都必须实现这个接口。(下面代码的

        FruitFactory接口,任何工厂类都必须实现FruitFactory接口

        2.具体工厂( Concrete Creator)角色:具体工厂类是抽象工厂的一个实现,负责实例化产品对象。(下面代码中的

        AppleFactory实例,用于具体负责实例化的产品对象。是实现抽象工厂的一个具体实现。

        3.抽象(Product)角色:工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。(下面代码中的

        Fruit接口,负责抽象出所有实例的公共特性。

        4.具体产品(Concrete Product)角色:工厂方法模式所创建的具体实例对象。(下面代码中的

        Apple类,负责实现抽象接口的具体的实例对象。

    3. 对于的相关代码如下:
      1.   代码
        package factorymethod;
        
        public class Apple implements Fruit {
        
            public void get(){
                System.out.println("吃苹果");
            }
        }
        package factorymethod;
        
        public class AppleFactory implements FruitFactory {
        
            public Fruit getFruit() {
                return new Apple();
            }
        
        }
        package factorymethod;
        
        public class Banana implements Fruit {
        
            public void get(){
                System.out.println("吃香蕉");
            }
        }
        package factorymethod;
        
        public class BananaFactory implements FruitFactory {
        
            public Fruit getFruit() {
                return new Banana();
            }
        
        }
        package factorymethod;
        
        public interface Fruit {
        
            public void get();
        }
        package factorymethod;
        
        public interface FruitFactory {
            public Fruit getFruit();
        }
        package factorymethod;
        
        public class Pear implements Fruit {
            @Override
            public void get() {
                System.out.println("吃梨");
            }
        }
        package factorymethod;
        
        public class PearFactory implements FruitFactory {
        
            public Fruit getFruit() {
                return new Pear();
            }
        }
        package factorymethod;
        
        public class MainClass {
            public static void main(String[] args) {
                //AppleFactory
                FruitFactory ff = new AppleFactory();
        
                Fruit apple = ff.getFruit();
                apple.get();
                
        
                FruitFactory ff2 = new BananaFactory();
                Fruit banana = ff2.getFruit();
                banana.get();
                
        
                FruitFactory ff3 = new PearFactory();
                Fruit pear = ff3.getFruit();
                pear.get();
            }
        }
    4. 工厂方法模式和简单工厂模式比较

        工厂方法模式与简单工厂模式在结构上的不同不是很明显。工厂方
      法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具
      体类上。 
        工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工
      厂类都有共同的接口,或者有共同的抽象父类。
        当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对
      象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也
      不需要修改客户端,很好的符合了“开放-封闭”原则。而简单工厂
      模式在添加新产品对象后不得不修改工厂方法,扩展性不好。
        工厂方法模式退化后可以演变成简单工厂模式。

    5. 根据上一小节,简单工厂模式和工厂模式的具体区别在哪里呢。我根据实际情况,画了一个对比图型,加深一下大家的印象。
  • 相关阅读:
    java 字符串大小比较
    安卓应用如何赚钱
    报错找不到jquery-1.10.2.min.map解决办法
    android 中 webview 怎么用 localStorage?
    HTML5 本地存储
    js获取url参数值
    java调用webservice
    点圆的关系---1
    数学建模入门书籍介绍
    北京秋日风景-最大的银杏林海景色
  • 原文地址:https://www.cnblogs.com/hardy-test/p/10587650.html
Copyright © 2020-2023  润新知