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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值