假设又要洗衣服了,只想让客户知道衣服放进去,然后拿出来(表示)
而隐藏洗衣服的过程(建造过程)可以考虑如下实现
表示类Builder 调用洗衣服方法
建造父类定义一个通用的洗衣服过程:放水-清洗-漂洗-排水-甩干
然后定义两个子类实现上面的建造过程
实现对于客户的表现和建造的解藕
Java实现代码
package com.liu.pattern4;
public class Builder {
private Washer washer;
public Builder(String washer) {
if("波轮洗衣机".equals(washer)){
this.washer = new BLWasher();
}else{
this.washer = new GTWasher();
}
}
public static void main(String[] args){
Builder b = new Builder("滚筒洗衣机");
b.wash();
}
public void wash() {
washer.washCloth();
}
}
abstract class Washer {
public void washCloth(){
waterin();
wash();
clean();
waterout();
dry();
}
public abstract void waterin();
public abstract void wash();
public abstract void clean();
public abstract void waterout();
public abstract void dry();
}
class GTWasher extends Washer{
@Override
public void waterin() {
System.out.println("滚筒洗衣机进水");
}
@Override
public void wash() {
System.out.println("滚筒洗衣机清洗");
}
@Override
public void clean() {
System.out.println("滚筒洗衣机漂洗");
}
@Override
public void waterout() {
System.out.println("滚筒洗衣机排水");
}
@Override
public void dry() {
System.out.println("滚筒洗衣机甩干");
}
}
class BLWasher extends Washer{
@Override
public void waterin() {
System.out.println("波轮洗衣机进水");
}
@Override
public void wash() {
System.out.println("波轮洗衣机清洗");
}
@Override
public void clean() {
System.out.println("波轮洗衣机漂洗");
}
@Override
public void waterout() {
System.out.println("波轮洗衣机排水");
}
@Override
public void dry() {
System.out.println("波轮洗衣机甩干");
}
}
C#实现代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace com.liu.pattern4
{
class Builder
{
private Washer washer;
public Builder(String washer) {
if("波轮洗衣机".Equals(washer)){
this.washer = new BLWasher();
}else{
this.washer = new GTWasher();
}
}
public void Wash() {
washer.WashCloth();
System.Console.ReadKey();
}
static void Main(string[] args)
{
Builder b = new Builder("波轮洗衣机");
b.Wash();
}
}
abstract class Washer
{
public void WashCloth()
{
Waterin();
Wash();
Clean();
Waterout();
Dry();
}
public abstract void Waterin();
public abstract void Wash();
public abstract void Clean();
public abstract void Waterout();
public abstract void Dry();
}
class GTWasher:Washer{
public override void Waterin()
{
System.Console.WriteLine("滚筒洗衣机进水");
}
public override void Wash()
{
System.Console.WriteLine("滚筒洗衣机清洗");
}
public override void Clean()
{
System.Console.WriteLine("滚筒洗衣机漂洗");
}
public override void Waterout()
{
System.Console.WriteLine("滚筒洗衣机排水");
}
public override void Dry()
{
System.Console.WriteLine("滚筒洗衣机甩干");
}
}
class BLWasher:Washer{
public override void Waterin()
{
System.Console.WriteLine("波轮洗衣机进水");
}
public override void Wash()
{
System.Console.WriteLine("波轮洗衣机清洗");
}
public override void Clean()
{
System.Console.WriteLine("波轮洗衣机漂洗");
}
public override void Waterout()
{
System.Console.WriteLine("波轮洗衣机排水");
}
public override void Dry()
{
System.Console.WriteLine("波轮洗衣机甩干");
}
}
}