面向对象程序设计模式(编辑修改稿)内容摘要:

的类的时候。 *将创建对象的职责委托给多个帮助 *类中的某一个,并且 *希望将哪一个帮助子类是代理者这一信息局部化的时候。 参与者 定义工厂方法所创建的对象的接口。 实现 Product 接口。 声明工厂方法,该方法返回一个 Product 类型的对象 * Creator 也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct 对象。 可以调用工厂方法以创建一个 Product 对象。 重定义工厂方法以返回一个 ConcreteProduct 实例。 类图 例子 product public interface Work { void doWork()。 } ConcreteProduct public class StudentWork implements Work { public void doWork() { (学生 *作业 !)。 } } public class TeacherWork implements Work { public void doWork() { (老师审批作业 !)。 } } Creator public interface IWorkFactory { Work get*ork()。 } Concre*eCreator pu*lic class StudentWorkFactory implements IWorkFactory { public Work getWork() { *eturn new StudentWork()。 } } public class TeacherWorkFactory implements IWorkFactory { public Work getWork() { return new TeacherWork()。 } } Test public class Test { public static void m*in(Strin*[] args) { IWorkFactory studentWorkFactory = new StudentWorkFactory()。 ().d*Work()。 IWorkFactory teacherWorkFactory * new TeacherWorkFactory()。 *tWork().*oWork()。 } } result 学生做作业 ! 老师审批作业 ! 2 结构型模式 适配器模式 将一个类的接口转换成客户希望的另外一个接口。 Adapter 模式使得原本由于接口 *兼容而不能一起工作的那 *类可以一起工作。 适用性 *一个已经存在的类,而它的接口不符合你的需求。 ,该类可以与其他不相关的类或不可预见的类(即那 *接口 可能不一定兼容的类)协同工作。 *.(仅适用于对象 Adapter)你想使用一些已经存在的子类 ,但是不可能对每一个都进行 子类化以匹配它们的接口。 对象适配器可以适配它的父类接口。 参与者 定义 Client 使用的与特定领域相关的接口。 与符合 Target 接口的对象协同。 *e 定义一个已经存在的接口,这个接口需要适配。 对 Adaptee 的接口与 Target 接口进行适配 例子 Target public interface Target { void adapteeMethod()。 void adapterMethod()。 } Adaptee public class Adaptee { public void adapteeMethod() { Syste*.*intln(Adaptee method!)。 } } Adapt*r public clas* Adapter implement* Target { private Adap*ee adaptee。 public Adapter(Adaptee adaptee) { * = adaptee。 } public void adapteeMethod() { ()。 } public void adapterMethod() { *(Adapter method!)。 } } Client public cla*s Test { public stati* void main(String[] args) { Target target = new Adapter(new Adaptee())。 tar*()。 *thod()。 } } result Adaptee method! Adapter method! 3 行为型模式 迭代器模式 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 适用性。 *统一的接口 (即 ,支持多态迭代 )。 参与者 迭代器定义访问和遍历元素的接口。 具 *迭代器实现迭代器接口。 对该聚合遍历时跟踪当前位置。 聚合定义创建相应迭代器 *象的接口。 具体聚合实现创建相应迭代器的接口,该操作返回 ConcreteIterator 的一个适当的实例 . 例子 Iterator public interface Iterator { Object nex*()。 void first()。 voi* last()。 boolean hasNext()。 } ConcreteIterator public class IteratorImpl implements It*rator { private List list。 private int index。 public Ite*atorImpl(List list* { index = 0。 = list。 } public void first() { index = 0。 } publ*c void last() { index = ()。 } public Object next() { Object obj = (index)。 index++。 ret*rn obj。 } public boolean hasNext() { return index ()。 } } Aggregate p*blic interface List { Iterator iterator()。 Object get(int index)。 int *etSize()。 void add(Object ob*)。 } ConcreteAggregate public class ListImpl implements List { private Object[] list。 private int index。 private int size。 public ListImpl() { index = 0。 size = 0。 list = new Object[100]。 } public Iterator iterator() { return new IteratorImpl(this)。 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。