java23种设计模式uml类图及对应示例代码
23 种设计模式 UML 类图及对应示例代码 (一) 收藏
1.DoFactory.GangOfFour.Abstract.Structural
Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它
们具体的类。
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求
即可。
消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:
如何创建及如何向客户端提供。
using System;
namespace DoFactory.GangOfFour.Abstract.Structural
{
///
/// MainAppstartupclass forStructural
/// Abstract Factory Design Pattern.
///
class MainApp
{
///
/// Entry point into console application.
///
public static void Main()
{
// Abstract factory #1
AbstractFactory factory1 new ConcreteFactory1();
Client client1 new Client(factory1);
client1.Run();
// Abstract factory #2
AbstractFactory factory2 new ConcreteFactory2();
Client client2 new Client(factory2);
client2.Run();
// Wait for user input
Console.Read();
}
}
// "AbstractFactory"
abstract classAbstractFactory
{
public abstract AbstractProductA CreateProductA();
public abstract AbstractProductBCreateProductB();
}
// "ConcreteFactory1"
class ConcreteFactory1 :AbstractFactory
{
public overrideAbstractProductA CreateProductA()
{
return new ProductA1();
}
public overrideAbstractProductBCreateProductB()
{
return new ProductB1();
}
}
// "ConcreteFactory2"
class ConcreteFactory2 :AbstractFactory
{
public overrideAbstractProductA CreateProductA()
{
return new ProductA2();
}
public overrideAbstractProductBCreateProductB()
{
return new ProductB2();
}
}
// "AbstractProductA"
abstract classAbstractProductA
{
}
// "AbstractProductB"
abstract classAbstractProductB
{
public abstract void Interact(AbstractProductA a);
}
// "ProductA1"
class ProductA1 :AbstractProductA
{
}
// "ProductB1"
class ProductB1 :AbstractProductB
{
public override void Interact