• 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();
        }
    }

    运行结果如下:

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

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

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

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

  • 相关阅读:
    WSL 修改默认登录用户为root
    WSL ssh服务自启动
    odoo 获取model的所有字段
    C++类型父类与子类的转换--dynamic_cast(转)
    开源软件/镜像库
    C/C++编译器gcc的windows版本MinGW-w64安装教程(转)
    msys2 环境搭建
    Windows下利用Cygwin搭建C/C++开发环境GCC(转)
    模板类中子类访问父类中的成员需要通过this指针
    C++ 构造函数与this指针
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/7977128.html
Copyright © 2020-2023  润新知