zoukankan      html  css  js  c++  java
  • java 之 建造者模式(大话设计模式)

    建造者模式,在笔者看来比较试用于,定制一个业务流程,而流程的细节又不尽相同,每个细节又必不可少,这时应考虑使用建造者模式。

    大话设计模式-类图

    先看下笔者写的一个简单的例子。

    /**
     *  所有建造过程不同的方法均定义在接口里
     */
    public interface IMakePerson {
    
        public void makeHead();
    
        public void makeBody();
    
        public void makeHandle();
    
        public void makeLeg();
    
        public Person getResult();
    }
    /**
     * 产品
     */
    public class Person {
    
        List<String> personParts = new ArrayList<>();
    
        public void add(String part) {
    
            personParts.add(part);
        }
    
        public void show() {
    
            for (String part : personParts) {
                System.out.print(part);
            }
        }
    }
    /**
     *  指挥官,指挥具体创建小人的过程
     */
    public class Director {
    
        public Person createPerson(IMakePerson makePerson) {
            makePerson.makeHead();
            makePerson.makeBody();
            makePerson.makeHandle();
            makePerson.makeLeg();
            return makePerson.getResult();
        }
    }
    /**
     *  实现创建小人接口的具体创建小人类
     */
    public class FatPerson implements IMakePerson{
    
        private Person person = new Person();
    
        @Override
        public void makeHead() {
            person.add("头    ");
        }
    
        @Override
        public void makeBody() {
            person.add("胖身体    ");
        }
    
        @Override
        public void makeHandle() {
            person.add("手    ");
        }
    
        @Override
        public void makeLeg() {
            person.add("腿    ");
        }
    
        @Override
        public Person getResult() {
            return person;
        }
    }
    /**
     *  实现创建小人接口的具体创建小人类
     */
    public class ThinPerson implements IMakePerson{
    
        private Person person = new Person();
    
        @Override
        public void makeHead() {
            person.add("头    ");
        }
    
        @Override
        public void makeBody() {
            person.add("瘦身体    ");
        }
    
        @Override
        public void makeHandle() {
            person.add("手    ");
        }
    
        @Override
        public void makeLeg() {
            person.add("腿    ");
        }
    
        @Override
        public Person getResult() {
            return person;
        }
    }
    /**
     * 客户端
     */
    public class Test {
    
        public static void main(String[] args) {
            IMakePerson thinPerson = new ThinPerson();
            Director director = new Director();
            Person thinperson = director.createPerson(thinPerson);
            thinperson.show();
    
            System.out.println("
    ---------------------------------------------");
    
            IMakePerson FatPerson = new FatPerson();
            Person fatperson = director.createPerson(FatPerson);
            fatperson.show();
        }
    }

    运行结果如下:

    头    瘦身体    手    腿    
    ---------------------------------------------
    头    胖身体    手    腿    

    可以看出如果我们继续创建不同的小人,我们只需要在写一个小人类实现接口就可以了,这样我们可以稳定的创建小人,而不会造出残疾人。

    实际工作中,很多流程都不尽相同,只是细节有区别,此时我们应采用建造者模式,来为不同的客户创建不同的稳定流程。

    以上是笔者对建造者的理解,希望能帮助学习的小伙伴!

  • 相关阅读:
    ListView的使用(二)长按弹出上下文菜单
    自己遇到程序安装完图标不显示记录
    ListView的使用(一)
    Docker 构建私有镜像仓库
    DockerFile 编译语法详解
    Docker 添加容器SSH服务
    Docker 数据卷与容器互联
    Docker 镜像与容器管理
    Docker 容器简介与部署
    Zabbix-自带监控项与Kye
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/7977128.html
Copyright © 2011-2022 走看看