需要记下
简单工厂模式 生产一个系列产品(英语书,数学书)或多个无关系列产品(水果与书)
//工厂模式
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();
}
}