( , ) ( )
//
public interface Book {
public void getType();
}
//
class MathBook implements Book{
public MathBook(String id){}
public void getType() {
System.out.println("Math");
}
}
//
class EngBook implements Book{
public void getType() {
System.out.println("Eng");
}
}
public class BookFactory {
public static Book getBook(int type){
if(type==1){return new MathBook("12");}
else {return new EngBook();}
}
public static void main(String []args){
// new+ , ,
Book b=BookFactory.getBook(1);
b.getType();
}
}
public interface Book {
public void getType();
}
class MathBook implements Book{
public void getType() {
System.out.println("Math");
}
}
class EngBook implements Book{
public void getType() {
System.out.println("Eng");
}
}
*******************************
public interface Provider {
public void test();
}
class MathProvider implements Provider{
public void test(){
System.out.println("Math Provider");
}
}
class EngProvider implements Provider{
public void test(){
System.out.println("Eng Provider");
}
}
*******************************
public interface AbstractFactory {
public Book getBook();
public Provider getProvider();
}
class MathFactory implements AbstractFactory{
public Book getBook(){
return new MathBook();
}
public Provider getProvider(){
return new MathProvider();
}
}
class EngFactory implements AbstractFactory{
public Book getBook(){
return new EngBook();
}
public Provider getProvider(){
return new EngProvider();
}
}
*************************************
public class TestFactory {
public static void main(String[] args) {
AbstractFactory af=new MathFactory();
Book b=af.getBook();
Provider p=af.getProvider();
b.getType();
p.test();
}
}
////////////////////////////////////////////
public interface Color {
void process();
}
class Red implements Color{
public void process(){
}
}
class Yellow implements Color{
public void process(){
}
}
class Green implements Color{
public void process(){
}
}
*******************
//
public class GoNoState {
private Color c;
public void go(){
//if(c==red){}
//else if(c==yellow){}
//else {}
}
}
********************
// ,
public class Go {
private Color c;
public Go(Color c){this.c=c;}
public void go(){
c.process();
}
}