假设又要洗衣服了,只想让客户知道衣服放进去,然后拿出来(表示)
而隐藏洗衣服的过程(建造过程)可以考虑如下实现
表示类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("波轮洗衣机甩干"); } } }
