设计模式:建造者模式

来源:互联网 发布:淘宝网电脑版首页 编辑:程序博客网 时间:2024/05/18 02:21

2017年11月23号,今年最无耻的一句话诞生了。

话说,昨天是周三。晚上六点的时候,已经是下班时间了。按照惯例,我们假模假样的在公司里多呆了一会。到六点一刻的时候,我们才关电脑下班。

我在地铁上,工作群中突然收到一个同事的微信。同事说:刚才领导问他:“为什么一下班,你们就走了!是不是手里没什么事情?”

我靠,MD,这TMD绝对是2017年最无耻的一句话。下班了,我们不应该走?手里有事情我们就不能下班了,我们就应该熬夜干?我们就活该天天夜夜给你干活?

我们周六加班,没有加班费,没有调休,晚上加班到八点以后,几次通宵,只有15元的餐补。我们才刚刚闲了一会儿,正常上下班,你就看不惯了!

你还是人吗?还有一点同理心吗?

不扯人情和人性,就按照合同来,我们也没有责任和义务天天夜夜上班啊!

我们在群里冷嘲热讽说了一大堆,没想到有个同事竟然帮领导说话。

对于不能正常上下班,他说,有几家软件公司是不加班?是能正常上下班的?

坦白说,这就是奴性。不讲道理,不讲逻辑,为人处世完全跟风。在中国什么叫董事,就是别人做什么,我们也做什么,这就是董事,这就是会做人做事。傻逼,如果有人吃屎,

是不是也要跟着吃!

因为其它公司都会加班,我们加班就合理了?fuck!如果真的要跟风,我们只是员工,我们应该跟好的比,比如外企。而且我们是受压迫被剥削者,放在封建时期,我们就好比是奴才,奴隶。

林语堂有过一句经典的话:中国有这么一群人,本身生活在社会底层,自身权利每天都在受到侵害,却具有统治阶层的意识,处处为统治阶级辩护,就是动物界也找不到如此低智的畜生。

可怜,自文艺复兴以来,人权,自由已经出现了三百多年了,我们至今不知道,不明白,不能拥有,不能享受。还活在丛林社会,崇尚适者生存,优胜劣汰的逻辑,胜者为王,败者为寇,以成败论英雄,趋炎附势,苟延残喘,勾心斗角,尔虞我诈。

呜呼,悲哉!

闲言少叙,书归正传。


什么是建造者模式:

Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。


建造者模式应用场景:

对象的创建:Builder模式是为对象的创建而设计的模式

创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象

关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法


package product;

public abstract class House {

    private String door;// 房门
    private String wall;// 墙
    private String window;// 窗户

    public String getDoor() {
        return door;
    }

    public void setDoor(String door) {
        this.door = door;
    }

    public String getWall() {
        return wall;
    }

    public void setWall(String wall) {
        this.wall = wall;
    }

    public String getWindow() {
        return window;
    }

    public void setWindow(String window) {
        this.window = window;
    }

    @Override
    public String toString() {
        return this.door+":"+this.wall+":"+this.window;
    }
}

package product;

/**
 * 房子
 *
 * @author guosheng
 *
 */
public class LouHouse extends House {

    
}

package builder;

import product.House;

public interface HouseBuilder {
    
    //安装门
    public void installDoor();
    
    //粉刷墙
    public void installWall();
    
    //安装窗户
    public void installWindow();
    
    //获取房子
    public House getHouse();
    

}

package builder;

import product.House;
import product.LouHouse;

public class LouBuilder implements HouseBuilder{
    
    House house = new LouHouse();
    
    /**
     * 安装房间门的方法
     */
    public void installDoor(){
        house.setDoor("铝合金门");
    }
    
    /**
     * 刷墙
     */
    public void installWall(){
        house.setWall("粉刷白面墙");
    }
    
    /**
     * 安装窗户
     */
    public void installWindow(){
        house.setWindow("pvc塑料窗户");
    }
    
    /**
     * 获取房子
     * @return
     */
    public House getHouse(){
        return house;
    }
    
}
package builder;

import product.House;

public interface HouseBuilder {
    
    //安装门
    public void installDoor();
    
    //粉刷墙
    public void installWall();
    
    //安装窗户
    public void installWindow();
    
    //获取房子
    public House getHouse();
    

}





原创粉丝点击