设计模式-建造模式

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

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

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值