跟上次一样还是洗衣服的事.
1.洗衣机部分没有改变,还是一个接口IWash和两个实现类
2.洗衣机工厂发生了改变,首先定义一个洗衣机工厂的接口,然后定义两个洗衣机工厂分别实现它.
Java实现代码如下:
IWasherFactory
package com.liu.pattern2;
public interface IWasherFactory {
public IWasher createWasher();
}
BLWasherFactory
package com.liu.pattern2;
public class BLWasherFactory implements IWasherFactory {
@Override
public IWasher createWasher() {
return new BLWasher();
}
}
GTWasherFactory
package com.liu.pattern2;
public class GTWasherFactory implements IWasherFactory {
@Override
public IWasher createWasher() {
return new GTWasher();
}
}
IWasher
package com.liu.pattern2;
public interface IWasher {
public void wash();
}
BLWasher
package com.liu.pattern2;
public class BLWasher implements IWasher {
@Override
public void wash() {
System.out.println("波轮洗衣机洗衣服了");
}
}
GTWasher
package com.liu.pattern2;
public class GTWasher implements IWasher {
@Override
public void wash() {
System.out.println("滚筒洗衣机洗衣服了");
}
}
Test
package com.liu.pattern2;
//工厂方法模式
public class Test {
public static void main(String[] args) {
IWasherFactory factory = new BLWasherFactory();
IWasher washer = factory.createWasher();
washer.wash();
}
}
C#代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace com.liu.pattern2
{
public interface IWasherFactory {
IWasher CreateWasher();
}
public class BLWasherFactory : IWasherFactory {
public IWasher CreateWasher()
{
return new BLWasher();
}
}
public class GTWasherFactory : IWasherFactory
{
public IWasher CreateWasher()
{
return new GTWasher();
}
}
public interface IWasher {
void Wash();
}
public class GTWasher : IWasher {
public void Wash() {
System.Console.WriteLine("滚筒洗衣机洗衣服了");
}
}
public class BLWasher : IWasher
{
public void Wash()
{
System.Console.WriteLine("波轮洗衣机洗衣服了");
}
}
class Test
{
static void Main(string[] args)
{
IWasherFactory factory = new GTWasherFactory();
IWasher washer = factory.CreateWasher();
washer.Wash();
System.Console.ReadKey();
}
}
}