设计模式-创建者模式

###创建者模式 ####创建者模式优点 在创建者模式中客户端不再负责对象的创建和组装,而是由一个具体的组装类来完成这项功能,将组装的责任交给组装类,客户端只负责对象的调用,从而更加明确了各个类的职责。

####创建者模式缺点 缺点:利用创建者模式可以创建出不同类型的产品,但是如果要创建的产品差异非常大就需要编写多个创建者类来实现,这无疑增加了代码的复杂性,而且创建者类只是在构造相关部件的发杂关系上有优势,如果要增加一个部件还是需要改变原有的代码,增加新的模块。

####创建者模式和工厂模式区别 工厂模式(工厂方法,简单工厂,抽象工厂)的关注点仅仅是最终产品,而建造者模式关注的除了产品之外,它还关心着产品构造的细节,这一点是Builder模式和Factory模式最显著的区别。

创建者类图

####创建者模式代码实现建房子 我要一座房子住,可是我不知道怎么盖(简单的砌墙,层次较低),也不知道怎么样设计(建几个房间,几个门好看,层次较高),于是我需要找一帮民工,他们会砌墙,还得找个设计师,他知道怎么设计,我还要确保民工听设计师的领导,而设计师本身也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样民工开始建设,最后,我可以向民工要房子了。在这个过程中,设计师是什么也没有,除了他脑子里的设计和命令,所以要房子也是跟民工要,记住了!

// 工人接口,定义了各个工人所要进行的工所作。他们负责进行具体部件如窗户,地板的建造。
// 同时因为房子是民工建的,因此建设完成后由他把房子递交回房主
public interface Builder {
    void makeWindow();
    void makeFloor();
    Room getRoom();
}

// 具体的工人->名工建造
public class MingGong implements Builder {
    private  String window="";
    private  String floor="";

    public  void makeWindow() {
        window=new String("window");
    }

    public  void makeFloor(){
        floor=new String("floor");
    }

    // 回交房子给房主
    public  Room  getRoom() {
        if((!window.equals(""))&&(!floor.equals(""))) {
            System.out.println("room ready!");
            return new Room();
        }
        else return null;
    }
}

//设计者设计房屋但是自己不去建造,指挥工人去建造
public class Designer {
    public void order(Builder builder){
        builder.makeWindow();
        builder.makeFloor();
    }
}

//最终的产品->房屋
public class Room {
}

public class Client {
    public static void main(String[] args) {
        //建造者
        Builder builder = new MingGong();
        //设计师
        Designer designer = new Designer();
        //指挥建造
        designer.order(builder);
        //获取房屋
        builder.getRoom();
    }
}	

转载于:https://my.oschina.net/u/2361475/blog/639332

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值