zoukankan      html  css  js  c++  java
  • 抽象工厂模式

    1、抽象工厂模式:依赖生产产品族的全部产品,他可以支持产品族的增加。

    2.抽象工厂是工厂模式的升级版,有许多的业务品种的时候,业务分类,通过抽象工厂模式产生需要的对象是一种好的解决方案。

    3.代码实现及其分析

      ·我们以生产汽车为例,进行分析,首先我们需要创建汽车,要创建发动机,座椅等,然后将其组装成一个汽车。下来开始案例。

    (1)我们首先创建一个发动机

      第一步:创建抽象类,然后实现方法,创建各自的实现

    package kw.test.cxgcms;
    
    /*
     * 发动机接口
     */
    public interface Engine {
        public void run();
        
        public void start();    
    }

    第二步实现类

    package kw.test.cxgcms;
    
    /*
     * 好的发动机
     */
    public class GoodEngine implements Engine{
    
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("run is fast!");
        }
    
        @Override
        public void start() {
            // TODO Auto-generated method stub
            System.out.println(" fast!");
        }
    
    }
    package kw.test.cxgcms;
    
    /*
     * 差发动机
     */
    public class BadEngine implements Engine{
    
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("run is slow!");
        }
    
        @Override
        public void start() {
            // TODO Auto-generated method stub
            System.out.println("slow!");
        }
    
    }

    (2)创建椅子

    第一步:

    package kw.test.cxgcms;
    
    public interface Seat {
        public void sitting();
    
    }

    第二步:

    package kw.test.cxgcms;
    
    public class GoodSeat implements Seat{
    
        @Override
        public void sitting() {
            // TODO Auto-generated method stub
            System.out.println("soft");
        }
    
    }
    package kw.test.cxgcms;
    
    public class BadSeat implements Seat{
    
        @Override
        public void sitting() {
            // TODO Auto-generated method stub
            System.out.println("badly");
        }
    
    }

    组件都已经创建好了,下来开始组装汽车

    package kw.test.cxgcms;
    
    public interface CarZJFactory {
        public Engine getEngine();
        public Seat getSeat();
        
    
    }

    其他的根据组装的方法,进行组装成自己的汽车

    package kw.test.cxgcms;
    
    public class BadCarFactory implements CarZJFactory{
    
        @Override
        public Engine getEngine() {
            // TODO Auto-generated method stub
            return new BadEngine();
        }
    
        @Override
        public Seat getSeat() {
            // TODO Auto-generated method stub
            return new BadSeat();
        }
    
    }
    package kw.test.cxgcms;
    
    public class GoodCarFactory implements CarZJFactory{
    
        @Override
        public Engine getEngine() {
            // TODO Auto-generated method stub
            return new GoodEngine();
        }
    
        @Override
        public Seat getSeat() {
            // TODO Auto-generated method stub
            return new GoodSeat();
        }
    
    }

    4.三种工厂方法的优缺点。

      `简单工厂模式:虽然不符合设计原则,实际中用的最多。

      ·工厂方法模式:不修改已有的类,通过工厂增加实现的扩展。

      ·抽象工厂模式:不增加产品,可以增加产品族。

  • 相关阅读:
    [转]eclipse转idea, 快捷键设置
    钻牛角尖还是走进死胡同--shell脚本根据名称获得 dubbo 服务的 pid
    SmartSVN has inconsistent newlines解决方法
    解决Mac java.net Local host name unknown error的方法
    Jenkins持续集成环境, 如何自定义 maven repositories
    如何用dat批处理文件关闭某端口对应程序-Windows自动化命令
    ionic 总结
    window resize的时候禁止频繁触发事件
    AJAX工作原理及其优缺点
    利用JS提交表单的几种方法和验证
  • 原文地址:https://www.cnblogs.com/kw28188151/p/8567381.html
Copyright © 2011-2022 走看看