使用UML编写Java 设计模式例子 FactoryMethod Pattern
类别: JAVA教程
摘自久久学院
看了论坛上的文章,读FactoryMethod Pattern UML图,写了个小例子程序。做为文章的补充!
//Creator.java
public abstract class Creator
{
/**
* looks like a factory
* contains some products and some process methods
*/
protected Product duct;
abstract String processProduct();
abstract String processProductSpecial();
public String Operation()
{
return processProduct(); // FactoryMethod for implemention;
}
}
//ConcreteProduct.java
public class ConcreteProduct extends Product
{
public ConcreteProduct()
{
System.out.println("construct the ConcreteProduct object");
}
public String makeString(String str)
{
return "This is the product after processing:"+str;
}
}
//Product.java
public abstract class Product
{
public abstract String makeString(String str);
}
//ConcreteCreatorA.java
public class ConcreteCreatorA extends Creator
{
/**
* You can write some other class like this to override
* the same methods do diffrent thing;
*/
public ConcreteCreatorA()
{
duct=new ConcreteProduct();
System.out.println("instanced a product");
}
public String processProduct()
{
System.out.println("product A:");
return duct.makeString("Make @#a product");
}
public String processProductSpecial()
{
System.out.println("special product B:");
//add another method here
return duct.makeString("Make Special @#B product");
}
}
//TestFactoryMethod.java
public class TestFactoryMethod
{
public TestFactoryMethod()
{
}
public static void main(String[] arg)
{
ConcreteCreatorA cc=new ConcreteCreatorA();
System.out.println(cc.Operation());
System.out.println(cc.processProductSpecial());
}
}
看了论坛上的文章,读FactoryMethod Pattern UML图,写了个小例子程序。做为文章的补充!
//Creator.java
public abstract class Creator
{
/**
* looks like a factory
* contains some products and some process methods
*/
protected Product duct;
abstract String processProduct();
abstract String processProductSpecial();
public String Operation()
{
return processProduct(); // FactoryMethod for implemention;
}
}
//ConcreteProduct.java
public class ConcreteProduct extends Product
{
public ConcreteProduct()
{
System.out.println("construct the ConcreteProduct object");
}
public String makeString(String str)
{
return "This is the product after processing:"+str;
}
}
//Product.java
public abstract class Product
{
public abstract String makeString(String str);
}
//ConcreteCreatorA.java
public class ConcreteCreatorA extends Creator
{
/**
* You can write some other class like this to override
* the same methods do diffrent thing;
*/
public ConcreteCreatorA()
{
duct=new ConcreteProduct();
System.out.println("instanced a product");
}
public String processProduct()
{
System.out.println("product A:");
return duct.makeString("Make @#a product");
}
public String processProductSpecial()
{
System.out.println("special product B:");
//add another method here
return duct.makeString("Make Special @#B product");
}
}
//TestFactoryMethod.java
public class TestFactoryMethod
{
public TestFactoryMethod()
{
}
public static void main(String[] arg)
{
ConcreteCreatorA cc=new ConcreteCreatorA();
System.out.println(cc.Operation());
System.out.println(cc.processProductSpecial());
}
}
- 上一篇: java右键弹出菜单
- 下一篇: 程序安装,升级及卸载核心部分(java编写)
-= 资 源 教 程 =-
文 章 搜 索