Java常用设计模式
目录
设计模式 1
创建模式 2
设计模式之Factory -工厂模式 2
设计模式之FACTORY METHOD -工厂方法模式 2
设计模式之Builder -建造模式 4
设计模式之PROTOTYPE -原始模型模式 5
设计模式之Singleton -单例模式 6
结构模式 7
设计模式之Adapter -适配器 7
设计模式之Bridge -桥梁模式 8
设计模式之Composite -合成模式 10
设计模式之DECORATOR -装饰模式 11
设计模式之Facade -门面模式 13
设计模式之FLYWEIGHT -享元模式 14
设计模式之PROXY -代理模式 15
行为模式 16
设计模式之Chain of Responsibility -职责链 16
设计模式之COMMAND - 命令模式 17
设计模式之INTERPRETER -解释器模式 19
设计模式之ITERATOR -迭代子模式 19
设计模式之MEDIATOR -调停者模式 21
设计模式之MEMENTO -备忘录模式 22
设计模式之OBSERVER -观察者模式 23
设计模式之STATE -状态模式 25
设计模式之STRATEGY-策略模式 26
设计模式之TEMPLATE METHOD-模板方法模式 27
设计模式之VISITOR -访问者模式 28
设计模式
分类
创建模式
结构模式
行为模式
优点
面向界面编程
降低耦合性
增加灵活性
创建模式
设计模式之Factory -工厂模式
客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
设计模式之FACTORY METHOD -工厂方法模式
追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory
public class Factory{
public static Sample creator(int which){
//getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
public abstract class Factory{
public abstract Sample creator();
public abstract Sample2 creator(String name);
}
public class SimpleFactory extends Factory{
public Sample creator(){
.........
return new SampleA
}
return new SampleA
}
public Sample2 creator(String name){
.........
return new Sample2A
}
.........
return new Sample2A
}
}
public class BombFactory extends Factory{
public Sample creator(){
......
java中常用的设计模式有哪些 return new SampleB
}
......
java中常用的设计模式有哪些 return new SampleB
}
public Sample2 creator(String name){
......
return new Sample2B
}
......
return new Sample2B
}
}
设计模式之Builder -建造模式
将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论