• 工厂方法模式


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

    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)工厂方法管理上难度大

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

  • 相关阅读:
    简单的jQuery扩展函数-让函数缓冲执行
    Sharepoint更新字段触发工作流(无代码)
    jQuery Multi-TouchWipe / Multi-TouchZoom
    jQuery WipeTouch
    当页弹出对话框的实现
    SlidesJS的使用
    三级浮动菜单的实现
    UI中经常出现的下拉框下拉自动筛选效果的实现
    图片预加载,按需加载
    项目新的需求,网页的自适应交付/响应式交付 Responsive/Adaptive Delivery
  • 原文地址:https://www.cnblogs.com/kw28188151/p/8561896.html
Copyright © 2020-2023  润新知