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

    简单工厂有一个缺点:违背了开闭原则,可以使用工厂方法模式来解决,但是类的数目是明显的增加了。

    1.工厂方法模式:使用工厂限定方法,每一种需要创建对象都需要创建一个工厂,并且需要实现此工厂方法,在工厂中创建出对象。

    2.代码实现:

      案例说明,需要创建两种车的市里,我们首先创建车的类,具体车的类实现车这个接口类。

    package kw.test.gcXXX;
    
    public interface Car {
        public void run();
    }

    具体车的类

    package kw.test.gcXXX;
    
    public class BenBen implements Car{
    
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("XCXXX");
        }
    }
    package kw.test.gcXXX;
    
    public class HongQi implements Car{
    
        @Override
        public    void run() {
            // TODO Auto-generated method stub
            System.out.println("XXXXXXXXXXX");
            
        }
    }

    两个车类也创建好了,现在我们创建车的工厂,只是提供创建车的方法,并没有具体实现。

    package kw.test.gcXXX;
    
    public interface Factory {
        public Car AllCar();
    
    }

    具体实现的车工厂,不同的工厂创建出自己具体的车

    package kw.test.gcXXX;
    
    public class HongQiFactory implements Factory{
    
        @Override
        public Car AllCar() {
            // TODO Auto-generated method stub
            return new HongQi();
        }
    
    }
    package kw.test.gcXXX;
    
    public class BenBenFact implements Factory{
    
        @Override
        public Car AllCar() {
            // TODO Auto-generated method stub
            return new BenBen();
        }
     
    }

    这种方法有个好处,需要创建新的车,只需要实现接口,实现里面的方法即可,也解决了简单工厂的缺陷。

    简单工厂和工厂方法比较

    (1)简单工厂的类复杂度低,类的个数相对少。

    (2)工厂方法代码的复杂度比较高。

    (3)工厂方法客户端编码复杂。

    (4)工厂方法管理上难度大

    以上比较:工厂方法不占优势,只是解决了开闭原则。

  • 相关阅读:
    nginx连接php fastcgi配置
    zabbix企业级监控概述和部署
    zabbix配置文件详解
    zabbix自定义键值原理
    ipvsadm命令
    lvs持久连接
    TCP协议的3次握手与4次挥手
    TCP协议的3次握手与4次挥手
    设计模式-模板模式
    设计模式-模板模式
  • 原文地址:https://www.cnblogs.com/kw28188151/p/8561896.html
Copyright © 2011-2022 走看看