zoukankan      html  css  js  c++  java
  • Java中的23种设计模式之——生成器(Builder)模式(5)

    定义:将一个复杂的对象,分成多分,使同样的构建过程,能有不同的表示,这样的设计模式被称为建造者模式。

    生成器(Bulider)模式---对象创建模式
    * 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    public class Bulider {
        public static void main(String[] args) {
            Waiter waiter = new Waiter();
            PizzaBulider hawailian_pizzaBulider = new HawailianPizzaBulider();
            //PizzaBulider spicy_pizzaBulider = new SpicyPizzaBuilder();
            waiter.setPizzaBulider(hawailian_pizzaBulider);
            //waiter.setPizzaBulider(spicy_pizzaBulider);//同样的构建,不一样的表示
            waiter.construct();
            System.out.println("pizza:"+waiter.getPizza());
        }
    }
    
    class Pizza {
        private String parts;
    
        public void setParts(String parts) {
            this.parts = parts;
        }
        public String toString(){
            return this.parts;
        }
    }
    abstract class PizzaBulider{
        protected Pizza pizza;
        public Pizza getPizza(){
            return pizza;
        }
        public void createNewPizza(){
            pizza = new Pizza();
        }
        public abstract void buildParts();
    }
    class HawailianPizzaBulider extends PizzaBulider{
    
        @Override
        public void buildParts() {
            pizza.setParts("cross + mild+han&pineapple");
        }
    }
    class SpicyPizzaBuilder extends PizzaBulider{
    
        @Override
        public void buildParts() {
            pizza.setParts("pan bake + hot+pepperoni&salami");
        }
    }
    class Waiter{
        private PizzaBulider pizzaBulider;
        public void setPizzaBulider(PizzaBulider pizzaBulider){//设置构造器
            this.pizzaBulider = pizzaBulider;
        }
        public Pizza getPizza(){
            return pizzaBulider.getPizza();
        }
        public void construct(){//构建
            pizzaBulider.createNewPizza();
            pizzaBulider.buildParts();
        }
    }
  • 相关阅读:
    隧道适配器,本地连接过多的解决办法
    C# 遍历HashTable
    sql2005 数据库转为sql 2000数据库的步骤
    自动扫描IP代理地址和自动切换IP的软件
    JS实现网页图片延迟加载[随滚动条渐显]
    批量修改hosts
    C#.NET获取当前月份最大天数
    如何让js调用不影响页面的加载速度?
    在sql中如何替换去掉回车符?
    Linq(01)对Linq的疑问及学习路径
  • 原文地址:https://www.cnblogs.com/ouyanxia/p/8378747.html
Copyright © 2011-2022 走看看