zoukankan      html  css  js  c++  java
  • java之工厂方法设计模式

    工厂方法模式是设计模式中应用最广泛的模式。在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。

    Bmw.java

    package fac;
    
    public interface Bmw {
        //产品的信息介绍
        void showInfo();
    }
    class Bmw3 implements Bmw{
    
        @Override
        public void showInfo() {
            // TODO Auto-generated method stub
            System.out.println("宝马3系");
        }
        
    }
    class Bmw5 implements Bmw{
    
        @Override
        public void showInfo() {
            // TODO Auto-generated method stub
            System.out.println("宝马5系");
        }
        
    }
    class Bmw7 implements Bmw{
    
        @Override
        public void showInfo() {
            // TODO Auto-generated method stub
            System.out.println("宝马7系");
        }
        
    }

    BmwFactory.java

    package fac;
    
    //汽车生产工厂接口
    public interface BmwFactory {
        Bmw productBmw();
    
    }
    class Bmw3Factory implements BmwFactory{
    
        @Override
        public Bmw productBmw() {
            // TODO Auto-generated method stub
            System.out.println("生产宝马3系");
            return new Bmw3();
        }
        
    }
    class Bmw5Factory implements BmwFactory{
    
        @Override
        public Bmw productBmw() {
            // TODO Auto-generated method stub
            System.out.println("生产宝马5系");
            return new Bmw5();
        }
        
    }
    class Bmw7Factory implements BmwFactory{
    
        @Override
        public Bmw productBmw() {
            // TODO Auto-generated method stub
            System.out.println("生产宝马7系");
            return new Bmw7();
        }
        
    }

    Main.jav

    package fac;
    
    public class Main {
        public static void main(String[] args) {
            Bmw b3 = new Bmw3Factory().productBmw();
            b3.showInfo();
            Bmw b5 = new Bmw5Factory().productBmw();
            b5.showInfo();
            Bmw b7 = new Bmw7Factory().productBmw();
            b7.showInfo();
        }
    }

    输出:

    生产宝马3系
    宝马3系
    生产宝马5系
    宝马5系
    生产宝马7系
    宝马7系

    说明:通过工厂把new对象给隔离,通过产品的接口可以接受不同实际产品的实现类,实例的类名的改变不影响其它合作开发人员的编程。

  • 相关阅读:
    隐马尔可夫模型 机器学习
    机器学习——EM算法与GMM算法
    机器学习——贝叶斯算法
    SVM算法 机器学习
    机器学习——谱聚类
    机器学习——Canopy算法
    机器学习——密度聚类
    Identity(身份)
    hyperledger fabric 结构模型学习
    fabric v1.1.0部署准备工作
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12055443.html
Copyright © 2011-2022 走看看