JAVA_工場とステータス設計モード


    
               (   ,   )         (    )
//    
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();
    }
}