设计模式-建造模式

    xiaoxiao2021-03-26  23

    假设又要洗衣服了,只想让客户知道衣服放进去,然后拿出来(表示)

    而隐藏洗衣服的过程(建造过程)可以考虑如下实现

    表示类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("波轮洗衣机甩干"); } } }

     

    转载请注明原文地址: https://ju.6miu.com/read-661303.html

    最新回复(0)